php - 使用 NuSoap 适用于本地机器,但不适用于服务器

标签 php nusoap

我开发了一些代码,使用 PHP 的 NuSoap 类来调用 soap 网络服务。我使用 NuSoap 而不是 PHP 5 native 类主要是因为我不想在共享 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);

当我把它放在虚拟服务器上而不是在本地运行时,最后一行只挂起大约 10 秒钟,然后 PHP 就崩溃了。没有引发异常,也没有 PHP 错误(我试过使用 try..catch 和 set_error_handler 只是为了确定)。

我的第一 react 是,这可能是服务器上运行的防火墙阻止传出请求,但我在其他地方成功地使用 cUrl 处理请求,而且我很确定这里没有运行防火墙。尽管调用 $client->use_curl 对 NuSoap 调用没有任何影响,它仍然不起作用。

如果您知道为什么会发生这种情况,我们将不胜感激。

最佳答案

如果您没有故障排除的想法,并且假设您在 Linux 上运行,则可以使用 strace 观察系统调用。这些调用可能看起来很神秘,但有时您可以看到它卡在哪个系统调用上,然后谷歌会调用它以获取更多信息。

strace -p processid

或者如果您想跟踪脚本从执行开始到结束并转储到输出文件:

strace -o trace.txt myscript.php

Here is a good strace tutorial .

关于php - 使用 NuSoap 适用于本地机器,但不适用于服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7724891/

相关文章:

php - Print_r() 和 at 符号 (@)

php - 如何根据分配给每个页面的类别为 wordpress 菜单列表着色?

php - 使用 nusoap 注册类方法

php - 从外部拥有的服务器检查目录或文件

php - Symfony Assetic 将所有文件合并为一个

php - 如何使 php 后端与 HTML 前端通信?

php - 字符串转 Leet (1337) 用 PHP 说话

Drupal-Salesforce 与 NuSOAP

web-services - 在 nuSoap 中发送图像或其他数据

php - 在 Linux 上使用 CURL (PHP) 的 SSL 连接,相同的代码在 Windows 上失败