1

簡単なPHPスクリプトを考えてみましょう。

$ pwd
/var/www/site/public_html

$ cat a.php
#!/usr/bin/php -q
<?php
echo "a: ".getcwd();
require_once('b.php');
?>

$ cat b.php
<?php
echo "b: ".getcwd();
?>

$ ./a.php > output
$ cat output
a: /var/www/site/public_html
b: /var/www/site/public_html

次に、簡単なcronジョブを設定します。

* * * * * /var/www/site/public_html/a.php > /var/www/site/public_html/output

ただし、これはcronが実行された後の出力です。

$ cat output
a: /home/user

パスが変更され、require関数は含めるスクリプトを見つけることができなくなりました。苛立たしいことに、cronジョブがパスを保持する別のサーバーがあります。私は立ち上がって構成オプションを実行しましたが、cronジョブとして実行した場合でも元のパスを保持するようにPHPを構成する方法を理解できません。これはどのように行われますか?

ありがとう。

4

2 に答える 2

6

これを試して

$fileRoot = dirname(__FILE__);
require_once($fileRoot.DIRECTORY_SEPARATOR.'b.php'); 
/* considering b.php is in same directory */
于 2012-11-22T14:02:29.523 に答える
3

cronコマンドで、指定した作業ディレクトリ内で実行するようにスクリプトを設定できます。

cd /var/www/site/public_html && ./a.php > output
于 2012-11-22T14:07:27.803 に答える