PHP Wordpress Soap Client调用,出现奇怪的卷曲错误

问题描述 投票:0回答:1

我正在开发一个非常简单的wordpress插件以连接到soap服务。它在我的本地主机上工作正常,但是在生产主机(我尝试了两种不同的主机)上,它将返回此错误:

SoapClient Object ( [trace] => 1 [_exceptions] => [_stream_context] => Resource id #303 [_soap_version] => 1 [sdl] => Resource id #304 ) Fatal error: Uncaught Error: Call to a member function GetModelfunctions() on bool in /home/.sites/278/site7279787/web/jobs/wp-content/plugins/hrjobs/jobsview.php:14...

这是功能:

function hrjobsinit() {
    $wsdl = WSDL_PATH;
        $handle = curl_init($wsdl);
        curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
        $response = curl_exec($handle);
        $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
    if ($httpCode > 399)
    {
        $client = null;
    }
    else
    {   
                $client = new SoapClient($wsdl, array(
                    'exceptions' => 0,
            'trace' =>true  
                ));
    }
        curl_close($handle);
    return $client;
}

我的本地主机是PHP版本7.2.24-0ubuntu0.19.04.2,Apache / 2.4.38,cURL 7.64.0

生产主机为Linux 3.10.0-962.3.2.lve1.5.27.el6h.x86_64,cURL 7.61.0,我注意到在无法使用的生产服务器中未启用某些cURL内容(IDN,TLS-SRP,PSL)。

php wordpress curl soap soap-client
1个回答
0
投票

首先,在try / catch块中设置SoapClient类的初始化。发生错误时,SoapClient会引发一个异常,将其作为SoapFault实例。只要您处于开发模式,就启用例外。这将使事情变得容易。

try {
    $client = new SoapClient($wsdl, $options);
} catch (SoapFault $fault) {
    var_dump($fault);
}

您提供的错误消息说,您在null上调用了Webservice方法。因此,我猜您的客户端初始化不成功。您是否检查过皂扩展是否在您的网站空间上可用?要检查,只需在您的网站空间上输出phpinfo()并搜索soap / ext。如果您有权访问服务器,请按照以下问题的答案进行操作:How do I install soap extension?否则,请询问您的提供商,是否可以启用soap扩展。

© www.soinside.com 2019 - 2024. All rights reserved.