file_get_contents失败w /空异常

时间:2015-07-27 08:49:03

标签: php google-app-engine proxy file-get-contents

我有一个奇怪的file_get_contents行为。我们在代理后面,所以我需要设置file_get_contents的上下文。奇怪的是,在我的电脑上它工作正常,但在其他PC或其他位置它将无法工作,运行到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 );

我也没有在其他PC上收到任何错误消息,只有

Warning: file_get_contents(...): in C:\trainingplan\lib\common.php on line 79

我认为奇怪的是警告不包含错误......我们认为它不是代理,因为我在任何地方都使用相同的代理,也可以使用不同的代理 - 相同的行为,在我的电脑上运行,别人没有。我也试过在其他PC上禁用防火墙和UAC以及其他安全服务,但效果不好......我们不知道可能是什么原因。

你对我有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我们终于找到了解决方案。它与网络无关。这是Google App Engine Launcher安装程序中包含的PHP 5.5的错误。指定时

runtime: php55
在app.yaml中,出现上述症状。当我们将运行时更改为

runtime: php

它适用于代理和一切。这可能有点问题,因为谷歌已经不赞成使用“runtime:php”,你只能将带有“runtime:php55”的应用程序上传到App Engine服务器。但我认为合理的解决方法是在本地开发“runtime:php”并将其更改为“runtime:php55”仅用于上传 - 但我不知道是否会产生其他影响......

我们昨天遇到的另一个原因是IPv6。在App Engine Launcher v1.9.23中,它有助于在PC的entwork设置中完全禁用IPv6。重启后,GAE Launcher的php-cgi.exe通过IPv4代理正确连接。