2013-07-03 50 views
3

我的服務器是nginx的+ PHP-FPMPHP-FPM崩潰時,捲曲或的file_get_contents請求HTTPS URL

下面的代碼將導致錯誤

file_get_contents('https://github.com'); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://github.com"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
$output = curl_exec($ch); //crash here 
curl_close($ch); 

網頁顯示502錯誤

nginx日誌爲

[錯誤] 2656#0:* 541的recv()失敗(104:連接由對等復位),同時讀取來自上游

fpm的測井響應報頭是

00年7月3日: 37:37.619903 [警告] fpm_children_bury(),第215行:在信號11上退出的子3567(池默認值)11 SIGSEGV(核心轉儲) )從開始後417.576755秒

00年7月3日:37:37.620807 [注意事項] fpm_children_make(),行352:孩子4193(池默認)開始

如果請求的URL以http://開頭,一切都OK了。

PHP configure命令是

'./configure' '--prefix=/www/nginx_php-5.2.17' '--with-config-file-path=/www/nginx_php-5.2.17/etc' '--with-mysql=/www/mysql' '--with-iconv=/usr' '--with-freetype-dir' '--with-jpeg-dir' '--with-png-dir' '--with-zlib' '--with-libxml-dir=/usr' '--enable-xml' '--disable-rpath' '--enable-discard-path' '--enable-inline-optimization' '--with-curl' '--enable-mbregex' '--enable-mbstring' '--with-mcrypt=/usr' '--with-gd' '--enable-gd-native-ttf' '--with-openssl' '--with-mhash' '--enable-ftp' '--enable-sockets' '--enable-zip' '--enable-fastcgi' '--enable-fpm' '--with-fpm-conf=/www/etc/php-fpm.conf' 
+0

崩潰後檢查'curl_error()'你會看到更多的信息 – DevZer0

+0

我有同樣的問題。你找到了解決方案嗎? –

+0

我遇到同樣的問題。如果您碰巧找到了解決方案,請啓發我們。 – arik

回答

0

嘗試增加這兩個:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 

他們將阻止SSL證書的驗證。這可能是問題,因爲驗證可能會失敗。除非需要驗證信息來源,否則在下載數據時,請務必添加這兩行文字(cURL)。

PS不知道這會幫助你。