У меня странное поведение file_get_contents. Мы за прокси-сервером, поэтому мне нужно было установить контекст file_get_contents. Странно то, что на моем ПК он работает нормально, но на другом ПК или в другом месте он не будет работать, запустив таймаут max_execution_time.
if ($requestType == 'GET') { $context = [ 'http' => [ 'method' => 'GET', 'header' => "Authorization: " . dbQueryHelper::getApiKey () . "\r\n" . "Content-Type: application/x-www-form-urlencoded\r\n", 'proxy' => getenv ( 'PROXY' ), 'request_fulluri' => true ], 'ssl' => array( 'SNI_enabled' => false, // Disable SNI for https over http proxies 'proxy' => getenv('PROXY'), 'request_fulluri' => true, "verify_peer"=>false, "verify_peer_name"=>false, ) ]; } $context = stream_context_create ( $context ); $dataraw = [ 'email' => getenv('DEVMAIL'), 'userEmail' => $user->getNickname(), 'production' => getenv('PROD') ]; $data = http_build_query ( $dataraw ); $context = dbQueryHelper::getContext ( 'GET' ); // this gets the context from above $result = file_get_contents ( getenv('RESTAPIURL') . '/getPernrByEmail?' . $data, false, $context ); $result = json_decode ( $result, true );
Я также не получаю сообщение об ошибке на других ПК, только
Warning: file_get_contents(...): in C:\trainingplan\lib\common.php on line 79
Я думаю, что странно, что предупреждение не содержит ошибки … Мы не думаем, что это может быть прокси-сервер, потому что я использую один и тот же прокси-сервер везде, а также могу использовать разные прокси-серверы – такое же поведение, на моем ПК это работает, на других не. Я также попытался отключить брандмауэр и UAC и другие службы безопасности на других ПК, также не работает … Мы не знаем, что может быть основной причиной.
У вас есть идеи для меня?
Наконец мы нашли решение. Это не связано с сетью. Это ошибка с PHP 5.5, содержащаяся в установщике запуска Google App Engine. Когда указано
runtime: php55
в app.yaml возникают вышеупомянутые симптомы. Когда мы меняем время выполнения на
runtime: php
он отлично работает с прокси-сервером и всем остальным. Это может быть довольно проблематичным, поскольку Google уже устарел от использования «runtime: php», и вы можете загружать приложения с «runtime: php55» на серверы App Engine. Но я думаю, что разумным обходным решением было бы разработать локально с «runtime: php» и изменить его на «runtime: php55» только для загрузки, но я не знаю, может ли это иметь другие последствия …
Другая причина, которую мы испытали вчера, – IPv6. В App Engine Launcher v1.9.23 он полностью отключает IPv6 в настройках работы вашего ПК. После перезагрузки php-cgi.exe GAE Launcher правильно подключается через прокси-сервер IPv4.