我正在開發一個使用Dropbox SDK做一些事情的網頁。大多數情況是通過CLI發生的,但必須在瀏覽器中完成一件特別的事情。不過,我偶然發現了一個有趣的問題。PHP7 + curl(SSL/TLS)給502 502錯誤的網關
$dbxClient = new dbx\Client($accountToken, 'xxx/' . VERSION);
$folderMetadata = $dbxClient->getMetadataWithChildren("/");
運行此代碼在CLI中工作得很好。然而,在瀏覽器中運行它卻給了我一個502.令人困惑的是,我啓動了xdebug並追蹤了問題出現的位置。我發現,Dropbox的捲曲調用導致了它,所以我寫了一個小示例腳本來查看捲曲是否可用。 它沒有。
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://example.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
在瀏覽器中運行此代碼會立即產生502。如果我刪除https://或者將其設置爲http://(或者在CLI中運行它),它也可以工作。這個問題似乎在PHP7 + curl + SSL中。添加curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
不起作用。
我該怎麼做才能發現,爲什麼發生這種情況以及我如何解決它?
系統的相關信息:
- OS X 10.11.2
- 的nginx 1.8.0,通過自制
- PHP 7.0.3安裝,通過自制
- 捲曲7.43.0安裝,通過自制軟件安裝
- OpenSSL 1.0.2f,通過自制軟件安裝
502生成什麼? PHP5-FPM? nginx的?或$輸出內的字符串? – hanshenrik
我的nginx。對我來說,它看起來像php-fpm崩潰。 –
更新:我現在可以在我的iMac上測試該示例。同樣的結果在那裏:502.但它在我所有的三臺Linux服務器上都能正常工作。 –