我看到我正在构建的 PHP 应用程序存在一个非常奇怪的问题。
我的开发服务器(Windows 7 64 位)sometestsite.com
和endpoint.sometestsite.com
.
在我的hosts
文件中,我配置sometestsite.com
并endpoint.sometestsite.com
指向127.0.0.1
.
当服务器运行 Apache 2.4.2 和 PHP 5.4.9 作为 fcgi 模块时,一切正常。
然后我删除了 Apache 并安装了 nginx-1.2.5 (windows build)。我让 php-cgi.exe 作为服务运行,一切似乎都运行良好。
问题是sometestsite.com
对endpoint.sometestsite.com
以前工作的 CURL 调用会超时。
然后我将这段代码单独移动到一个小的 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 问题。
任何人都可以提供一些关于为什么会发生这种情况的见解/过去的经验吗?