我有cron作业设置来调用一个刮取函数的SOAP服务。我一直在从其中一个脚本中捕获错误:
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)。
答案 0 :(得分:1)
如果查看异常的堆栈跟踪,可以看到第一个参数是字符串'N;'
,即使传递给它的变量名为$array
。
如果你评价serialize(null)
,这就是你所得到的,这是一个巧合,我会感到非常惊讶,这表明存在两个问题:首先,这个论点应该是否为空;其次,为什么它贯穿serialize
?