我有一个包含休闲代码的简单php脚本:
$options = array(
'uri'=>'http://schemas.xmlsoap.org/wsdl/soap/',
'style'=>SOAP_RPC,
'use'=>SOAP_ENCODED,
'soap_version'=>SOAP_1_1,
'cache_wsdl'=>WSDL_CACHE_NONE,
'connection_timeout'=>15,
'trace'=>true,
'encoding'=>'UTF-8',
'exceptions'=>true
);
$client = new SoapClient($wsdl,$options);
[当我通过php-cli(CentOS 8)执行代码时,一切都像一个魅力。我可以成功连接到Web服务并调用方法,处理响应等。
[当我尝试通过浏览器执行脚本时,出现错误:
致命错误:未捕获的SoapFault异常:[WSDL] SOAP错误:解析WSDL:无法从'http://xxx/services/Assets?wsdl'加载:无法在/ var / www / html /中加载外部实体“ http://xxx/services/Assets?wsdl” xxx.php:32堆栈跟踪:#0 /var/www/html/xxx.php(32):SoapClient-> SoapClient('http://xxx ....',Array)#1 {main}抛出/ var /www/html/xxx.php,第32行
由于php在服务器端]执行”,通过php-cli直接在服务器上运行脚本与通过浏览器间接从远程主机运行脚本之间有什么区别? PHP是在Web服务器上执行的,因此它不应该是防火墙/网络问题...对吧?我正在尝试连接的Web服务服务器位于具有apache / php的CentOS之外的其他主机上,但是它们之间没有防火墙/ acl。路由配置正确(就像我说的那样,从php-cli一切正常)
我有一个包含休闲代码的简单php脚本:$ options = array('uri'=>'http://schemas.xmlsoap.org/wsdl/soap/','style'=> SOAP_RPC,'use' => ...
setsebool -P httpd_can_network_connect 1