Php 使用NuSoap可以在本地计算机上工作,但不能在服务器上工作

Php 使用NuSoap可以在本地计算机上工作,但不能在服务器上工作,php,nusoap,Php,Nusoap,我已经开发了一些代码,它使用PHP的NuSoap类来调用soap web服务。我使用NuSoap而不是PHP5本机类,主要是因为我不想在共享web服务器上安装此代码时添加额外的先决条件。代码在我的机器上运行良好: require DOCROOT.'modules/nbn_species_dict_sync/lib/nusoap.php'; $client = new nusoap_client('http://www.nbnws.net/ws_3_5/GatewayWebService?wsdl

我已经开发了一些代码,它使用PHP的NuSoap类来调用soap web服务。我使用NuSoap而不是PHP5本机类,主要是因为我不想在共享web服务器上安装此代码时添加额外的先决条件。代码在我的机器上运行良好:

require DOCROOT.'modules/nbn_species_dict_sync/lib/nusoap.php';
$client = new nusoap_client('http://www.nbnws.net/ws_3_5/GatewayWebService?wsdl', true);
$query1 = '<TaxonReportingCategoryListRequest xmlns="http://www.nbnws.net/TaxonReportingCategory" registrationKey="'.$key.'"></TaxonReportingCategoryListRequest>';
$response = $client->call('GetTaxonReportingCategoryList', $query1);
需要DOCROOT.modules/nbn_species\u dict\u sync/lib/nusoap.php';
$client=新nusoap_客户机($client)http://www.nbnws.net/ws_3_5/GatewayWebService?wsdl",对),;
$query1='';
$response=$client->call('GetTaxonReportingCategoryList',$query1);
当我把它放在一个虚拟服务器上而不是在本地运行它时,最后一行只挂起大约10秒钟,然后PHP爆炸了。没有引发异常,也没有PHP错误(我尝试使用try..catch和set_error_处理程序只是为了确保这一点)

我的第一反应是,这可能是在服务器上运行的防火墙阻止了传出的请求,但我在别处成功地使用了cUrl来处理请求,我非常确定这里没有运行防火墙。调用$client->use\u curl对NuSoap调用没有任何影响,但仍然不起作用


如果您有任何关于为什么会发生这种情况的想法,我们将不胜感激。

您能否确保www数据具有访问权限

DOCROOT.'modules/nbn_species_dict_sync/lib/nusoap.php' ?
或者您可以尝试将nusoap复制到另一个目录吗

或者您可以尝试以root用户身份从命令提示符运行它吗


顺便问一下,您收到了什么样的错误/警告?

如果您没有排除故障的想法,并且假设您在Linux上运行,您可以使用strace来观察系统调用。这些调用看起来很神秘,但有时你可以看到系统对其挂起的调用,然后用谷歌搜索该调用以获取更多信息

strace -p processid
或者,如果要跟踪脚本从执行开始到完成并转储到输出文件:

strace -o trace.txt myscript.php

.

本地主机和服务器上最可能的内存限制设置不同,服务器会耗尽内存。谢谢您的建议。我已经将内存限制提高到了96M,但这只有在调用$client->setGlobalDebugLevel(0)时才起作用。即使关闭调试,64M也是不够的。我刚刚检查过,web服务正在响应约2MB的数据。在这种情况下,内存使用率如此之高似乎有些奇怪。我也遇到了类似的问题。我有一个5mb的数据响应,来自一个Web服务,nuSOAP希望占用256mb以上的内存来处理。我遇到了类似的问题,放弃了生产服务器,将尝试此方法尝试从本地机器和虚拟机访问浏览器上的url到wsdl文件。您是否获得wsdl内容,或者网关超时。这可能会告诉你出了什么问题。