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_path
php.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パスを指定する必要はありません。乾杯!