проблема с работой cron с soapclient, включенным в php

У меня есть php-скрипт, и мне нужно запускать его каждый день. У этого скрипта есть soapclient, и он отлично работает, если я запускаю его как скрипт, используя браузер напрямую. Однако некоторые фатальные ошибки, если я установил это как задание cron.

Скрипт очень простой, как "crontest.php"

<?php 

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

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

exit;
?>

И cronjob, который я установил,

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 );

Кто-нибудь может помочь?


person Community    schedule 01.09.2009    source источник
comment
Возможно, когда вы запускаете это в своем браузере, это php-cgi, который обрабатывает скрипт, а здесь это php-cli, попробуйте посмотреть, не связана ли ваша проблема с этим.   -  person p4bl0    schedule 01.09.2009


Ответы (2)


Вместо того, чтобы запускать скрипт, вызывая php напрямую, попробуйте использовать lynx, чтобы заставить сервер загрузить страницу через 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

person gapple    schedule 01.09.2009

Вероятно, вам нужно включить файл nusoap.php или загрузить библиотеку php. Он включен только после версии 5.0.1, но сервер может его не использовать (особенно если вы используете nusoap, у которого такое же имя класса).

Вы должны выполнить поиск кода веб-сайта и найти включение nusoap.php или команду типа dl('SoapClient') (dl загружает библиотеку php).

Если это не nusoap, вы можете попробовать команду php -m и посмотреть, есть ли там SoapClient. Если нет, попробуйте php -v.

person OIS    schedule 01.09.2009