我设置了cron作业来调用执行抓取功能的SOAP服务。我从这些脚本中得到错误,这些脚本被catch捕获:
Error: SoapFault exception: [SOAP-ENV:Server] Call to a member function getAttribute() on a non-object in /var/www/run_code.php:38
Stack trace:
#0 /var/www/run_code.php(38): SoapClient->__call('scrapeRankingsB...', Array)
#1 /var/www/run_code.php(38): SoapClient->scrapeRankingsBulk('N;', 0, 'a:1:{i:19131;s:...', 50, 'domain.com')
第38行是这样的
$results = $client->scrapeRankingsBulk($array,0,$array2,50,'domain.com');
我正在建立一个连接与:
$client = new SoapClient('http://IP?WSDL', array('trace' => 1) );
绝对没有调用getAttribute所以我想知道为什么它抱怨getAttribute?它是在内部调用它,还是只能来自SoapServer?
在服务器端,scrapeRankingsBulk方法在服务器端没有直接调用getAttribute。并且/var/log/apache2/error.log
没有从服务器(LogLevel=warn)记录任何错误。
如果您查看异常的堆栈跟踪,您可以看到第一个参数是字符串'N;'
,尽管您传递给它的变量名为$array
。
如果这是一个巧合,这是你得到的,如果你评估serialize(null)
,我会非常惊讶,这表明两个问题:首先,这个论点应该是空的;其次,为什么要通过serialize
来运行呢?