저는 현재 구축중인 PHP 응용 프로그램에 매우 이상한 문제가 있습니다.PHP CURL이 시간 초과되었지만 CLI CURL이 작동합니다.
내 개발 서버 (Windows 7 64 비트)에 2 개의 가상 호스트 sometestsite.com
과 endpoint.sometestsite.com
이 있습니다.
내 hosts
파일에 sometestsite.com
및 endpoint.sometestsite.com
이 127.0.0.1
을 가리 키도록 구성했습니다.
서버가 아파치 2.4.2와 PHP 5.4.9를 fcgi 모듈로 실행할 때 모든 것이 작동합니다.
그런 다음 Apache를 제거하고 nginx-1.2.5 (Windows 빌드)를 설치했습니다. php-cgi.exe가 서비스로 실행 중이고 모든 것이 잘 작동하는 것 같습니다.
문제는 이전에 작업 한 sometestsite.com
에서 endpoint.sometestsite.com
까지의 CURL 호출이 시간 초과된다는 것입니다.
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
그러나, 나는 실행하는 경우 :
$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 파일 자체 코드의 조각을 이동 (힘내 배쉬를 통해) CLI CURL을 사용하여 동일한 요청, 그것을 잘 작동합니다 :
$ curl -X POST 'http://endpoint.sometestsite.com/test' -d'provider=provider&key=asdf'
{"test": "OK"}
이 매우 이상한 인 PHP 전자 그대로 xactly 같은 버전이고 아파치가 사용될 때와 같은 설정을 가진다.
웹 서버 구성 문제이거나 아직 PHP의 CURL에 문제가 있는지 확실하지 않습니다.
왜 이런 일이 일어나는 지에 대한 통찰력/과거 경험을 제공 할 수 있습니까?
D : \ www \ test5.php의 22 행에 무엇이 있는지 보여 줄 수 있습니까? – Sherif
@GoogleGuy : 22 행은 실제로'실행하고 데이터를 다시 얻습니다 .' (CURL 요청 전에 다른 코드가 있지만 일부 문자열 만 출력합니다). 그래서'curl_exec()'가 시간 초과되었습니다. – F21
맞아요, 그건 당신 문제의 중요한 부분입니다. 오류의 원인이기 때문에 코드에 포함시키는 것이 도움이되었을 것입니다. – Sherif