【问题标题】:cron job problem with soapclient included in phpphp中包含soapclient的cron作业问题
【发布时间】:2009-09-02 04:33:22
【问题描述】:

我有一个 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

它给出的错误是

致命错误:在 /home/duan/public_html/scripts/crontest.php

中找不到类“SoapClient”

如果我删除行,它会正常工作

$soap = new SoapClient( $mage_url );

有人可以帮忙吗?

【问题讨论】:

  • 也许当您在浏览器中运行它时,处理脚本的是 php-cgi,而这里是 php-cli,请尝试看看您的问题是否来自于此。

标签: php soap cron


【解决方案1】:

不要通过直接调用 php 来运行脚本,而是尝试使用 lynx 让服务器通过 http 请求加载页面:

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

这应该会导致脚本以与您自己通过网络浏览器查看时相同的方式运行。首先在命令行上对其进行测试,然后对于您的 cron 作业,您可以将输出转移到 /dev/null 或适当的日志:

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

【讨论】:

    【解决方案2】:

    您可能需要包含文件 nusoap.php 或加载 php 库。 5.0.1以后才包含,但是服务端可能不会用到(尤其是你用nusoap,类名一样)。

    您应该搜索网站代码并查找包含 nusoap.php 或类似 dl('SoapClient') 的命令(dl 加载 php 库)。

    如果不是 nusoap,你可以试试命令 php -m 看看有没有 SoapClient。如果没有尝试 php -v.

    【讨论】:

      猜你喜欢
      • 2011-06-30
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 2016-09-14
      • 2012-02-26
      • 2012-08-01
      • 2011-08-18
      • 2015-09-27
      相关资源
      最近更新 更多