2015-07-27 2 views
0

У меня странное поведение file_get_contents. Мы за прокси-сервером, поэтому мне нужно было установить контекст file_get_contents. Странно то, что на моем ПК он работает нормально, но на другом ПК или в другом месте он не будет работать, запустив таймаут max_execution_time.file_get_contents failed w/empty exception

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 и другие службы безопасности на других ПК, также не работает ... Мы не знаем, что может быть основной причиной.

У вас есть идеи для меня?

ответ

0

Мы, наконец, нашли решение. Это не связано с сетью. Это ошибка с 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.

Смежные вопросы