crontabに他のPHPインストール場所を使用するようにどのように通知できますか?

crontabに他のPHPインストール場所を使用するようにどのように通知できますか?

Mac OS X 10.5システムでPHP 5.3.5を実行するMAMP設定があります。私はMAMPサーバー上のPHPスクリプトを実行するcrontabをインストールしようとしています。 /usr/bin/php(バージョン5.2.15)でPHPインストールを使用している場合にのみcrontabを実行できます。つまり、これはプレインストールされたMAC OS X PHPインストールです。 crontabを実行するときにPHPのMAMPバージョンをどのように使用しますか? /usr/bin/phpに新しいバージョンのPHPをインストールするにはUnixについて十分に知りませんが、これは可能ですか?

crontabで次のようにPHPスクリプトを実行したいと思います。マンフスPHP版です。スクリプトが正常に実行され、目的の結果が得られたためです。ただし、/usr/bin/phpにあるシステムのデフォルトのPHPインストールを使用してcrontabを実行しようとすると、致命的なPHPエラーが発生します。

-

これが役に立つ場合は、MAMPバージョンの/ usr / bin / phpの結果は次のとおりです。最初のコード例は私のPHPスクリプトを正常に実行します。

$  MAMP_PHP_PATH="/applications/mamp/bin/php5.3/bin/php"
$  $MAMP_PHP_PATH -f /path/to/my/script.php

次のコマンドを実行すると、次のことが起こります。

$  # whereis php in this case returns usr/bin/php
$  php -f /path/to/my/script.php

次のエラーが発生します(私のフォーマットをフォーマットしています)。

Fatal error: require_once(): 
Failed opening required '/path/to/includes/initialize.php' 
(include_path='.:') in /path/to/my/script.php on line 3

最後に、私のcrontabファイルは次のようになります(MAMPを使用するPHP)。

15 * * * * /Applications/MAMP/bin/php5.3/bin/php /path/to/my/script.php

MAMPなしのPHP:

15 * * * * php /path/to/my/script.php

ありがとう

答え1

crontabで必要な環境変数を設定します。たとえば、

PATH=/Applications/MAMP/bin/php5.3/bin:/usr/local/bin:/usr/bin:/bin
MAMP_PHP_PATH=/applications/mamp/bin/php5.3/bin/php
15 * * * * php /path/to/my/script.php

答え2

これ短いA:結局、ちょうどインストールしました。最新バージョンのPHP私のシステムに。

これ長い答え(そしてその過程で経験したすべての痛み):
crontabが実行されているときにスクリプトでインスタンス化された特定のクラス  SoapClientが見つからないというエラーが発生し続けます。私のもの自動ロード機能どちらも見つからなかったため、OPに示すように次のエラーが発生します。

Fatal error: require_once(): 
Failed opening required '/path/to/includes/initialize.php' 
(include_path='.:') in /path/to/my/script.php on line 3

別の同様のエラーが発生しました。このようなエラーが引き続き発生しました。問題は、以前のバージョンのPHPでSOAP拡張が有効になっていないことに気づき、自動ロード機能がそれを見つけたときにインストールされたPHPを確認しました。php.iniファイルには次の行が含まれています。include_pathそして、含めたいSOAPクラスのディレクトリを確認します。クラスが見つからないと、致命的なエラーが発生します。 ノート:(include_pathphp.iniファイルのUnix環境の$ PATH変数と同様に機能します)。

locate php.iniコマンドといくつかの直観を使用して、私のシステム上のphp.iniファイルが/private/etc/php.ini.defaultその時点の場所にあることを発見しました。古いphp.ini ファイル – PHP 5.2 バージョン用のファイルです。要点は、石鹸がまったく有効になっていないため、include_path私のphp.iniファイルのパラメータがその場所を見つけることができないことです。

だからPHP 5.4.4をダウンロードし、次のコマンドを実行しました。

$ ./configure --enable-soap --with-mysql
$ make
$ make install

インストールはにありましたが、/usr/local/binルートPHPインストールはにあった/usr/binので、次のコマンドを実行してすべて/usr/local/binをに移動し、/usr/bin以前のPHPバージョンを上書きしました。

$ sudo cp -Rvf /usr/local/bin/ /usr/bin

私は以下を指定します。
-R階層内のすべてのファイルをコピーし/usr/local/bin/-vプロセス中にどのファイルが移動されたかを示す出力メッセージを表示し、-f必要に応じてそのファイルを上書きできます。/usr/bin

古いバージョンのPHPを新しいバージョンで上書きすると、新しいバージョンの場所php.iniファイルは別の場所にあります。しかし、どこ?私はこれを見つけるためにこれを実行しました:

$ php -i | grep -i "configuration file"
  Configuration File (php.ini) Path => /usr/local/lib
  Loaded Configuration File => /usr/local/lib/php.ini

適切に変更した後、/private/etc/php.ini.defaultのファイルをphp 5.4.4インストールに付属の新しいphp.iniファイルで上書きしました。

ヴィオラ。 cronジョブが実行中なので、別のPHPパスを指定する必要はありません。乾杯!

関連情報