Я разработал код, который использует классы NuSoap для PHP для вызова мыльного веб-сервиса. Я использую NuSoap, а не нативные классы PHP 5, в основном потому, что не хочу добавлять дополнительные предварительные условия, когда этот код установлен на общем веб-сервере. Код отлично работает на моей машине:
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, чтобы быть уверенным).
Моей первой реакцией было то, что это может быть брандмауэр, работающий на сервере, блокирующий исходящие запросы, но я успешно использую cUrl в другом месте для запросов, и я почти уверен, что здесь не работает брандмауэр. Вызов $client->use_curl не имеет никакого значения для вызова NuSoap, он все равно не работает.
Любые идеи, почему это может происходить, будут высоко оценены.