作成中の PHP アプリケーションで非常に奇妙な問題が発生しています。
開発サーバー (Windows 7 64 ビット)sometestsite.com
とendpoint.sometestsite.com
.
私のhosts
ファイルでは、sometestsite.com
とendpoint.sometestsite.com
を指すように構成しました127.0.0.1
。
サーバーがPHP 5.4.9をfcgiモジュールとして使用してApache 2.4.2を実行していた場合、すべてが機能します。
次に、Apache を削除し、nginx-1.2.5 (Windows ビルド) をインストールしました。php-cgi.exe をサービスとして実行しましたが、すべて正常に動作しているようです。
sometestsite.com
問題は、以前は機能していた からへの CURL 呼び出しendpoint.sometestsite.com
がタイムアウトになることです。
次に、そのコードの一部を、テスト用に小さな PHP ファイルに移動しました。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://endpoint.sometestsite.com/test');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('provider' => urlencode('provider'),
'key' => urlencode('asdf')));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//Execute and get the data back
$result = curl_exec($ch);
var_dump($result);
これは、PHP ログで受け取るものです。
PHP Fatal error: Maximum execution time of 30 seconds exceeded in D:\www\test5.php on line 22
PHP Stack trace:
PHP 1. {main}() D:\www\test5.php:0
ただし、CLI CURL (Git Bash 経由) を使用して同じ要求を実行すると、正常に動作します。
$ curl -X POST 'http://endpoint.sometestsite.com/test' -d'provider=provider&key=asdf'
{"test": "OK"}
PHP は Apache を使用したときとまったく同じバージョンであり、構成も同じであるため、これは非常に奇妙です。
これが Web サーバーの構成の問題なのか、PHP の CURL の問題なのかはまだわかりません。
なぜこれが起こっているのかについて、誰かが洞察/過去の経験を提供できますか?