2009-09-01 4 views
0

私はPHPスクリプトを持っており、毎日実行する必要があります。このスクリプトにはsoapclientがあり、ブラウザを直接使用してスクリプトとして実行すると正常に動作します。しかし、私がcronジョブとして設定すると、いくつかの致命的なエラーが発生します。soapclientのcronジョブの問題がPHPに含まれています

スクリプトは "crontest.php"

<?php 

$mage_url = 'http://******.com/api/?wsdl'; 
$mage_user = '*****'; 
$mage_api_key = '******'; 

$soap = new SoapClient($mage_url); 
echo "success"; 

exit; 
?> 

そして、私が設定cronジョブとして非常に単純で、それが与えるエラーが

致命的なエラーが発生しましある

0 8 * * * /usr/bin/php /home/duan/public_html/scripts/crontest.php 

です:クラス「SoapClient」が見つからない/home/duan/public_html/scripts/crontest.php

私は誰でも助けることができるライン

$soap = new SoapClient($mage_url); 

を削除する場合は正常に動作しますか?

+1

おそらく、ブラウザでこれを実行すると、スクリプトを処理するphp-cgiであり、ここではphp-cliだから、あなたの問題がそれに由来していないかどうかを調べてみてください。 – p4bl0

答えて

0

代わりに直接PHPを呼び出すことで、スクリプトを実行しているのは、httpリクエストによってページをロードするためにサーバーを取得するにはオオヤマネコを使用してみてください:

/usr/bin/lynx -source http://example.com/cron.php

これは、スクリプトが同じで実行させなければなりませんあなたが自分のウェブブラウザを使って自分自身を見るときと同じように。最初のコマンドライン上でそれをテストして、あなたのcronジョブのためにあなただけを/ dev/nullに出力したり、必要に応じてログをそらすことができます。

/usr/bin/lynx -source http://example.com/cron.php > /dev/null 2>&1

0

あなたはおそらく、ファイルnusoapを含める必要があります。 phpまたはPHPライブラリを読み込みます。これはバージョン5.0.1の後にのみ含まれていますが、サーバがそれを使用しない可能性があります(特に、同じクラス名を持つnusoapを使用する場合)。

あなたは、ウェブサイトのコードを検索し、nusoap.phpのの包含またはDL(「のSoapClient」)(DLはPHPのライブラリをロードする)のようなコマンドを探す必要があります。

nusoapでない場合は、コマンドphp -mを試して、SoapClientがあるかどうか確認してください。試していない場合php -v

関連する問題