我有兩臺服務器在不同的軟件版本中運行類似的網絡應用程序。cURL文件下載適用於PHP 5.3而不是5.5
兩個服務器運行的CentOS 6.5
一個具有Apache 2.2的PHP 5.3
而另一種是運行Apache 2.4 PHP 5.5
之一這個應用程序的鍵功能被週期性地下載一個從遠程URL
這是使用捲曲完成CSV文件,下面的代碼:
$filename = 'export.csv';
$url = 'http://www.someaddress.com/export/' . $filename;
$curl = curl_init();
$fd = fopen(DIR_FS_ADMIN . 'temp/' . $filename , "w");
curl_setopt ($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_FILE, $fd);
curl_exec ($curl);
curl_close ($curl);
正如你所看到的代碼,一個很簡單的一點是,在PHP的偉大工程5.3
這是curl_getinfo()
[content_type] => text/csv
[http_code] => 200
[header_size] => 209
[request_size] => 95
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 1.98925
[namelookup_time] => 0.816404
[connect_time] => 0.817009
[pretransfer_time] => 0.831392
[size_upload] => 0
[size_download] => 13564110
[speed_download] => 6818705
[speed_upload] => 0
[download_content_length] => 13564110
[upload_content_length] => -1
[starttransfer_time] => 0.834829
[redirect_time] => 0
[certinfo] => Array
(
)
[redirect_url] =>
)
Error Code: 0
的結果,這些是相同的代碼上工作5.5的結果
[content_type] =>
[http_code] => 0
[header_size] => 0
[request_size] => 0
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 126.332476
[namelookup_time] => 0.000369
[connect_time] => 0
[pretransfer_time] => 0
[size_upload] => 0
[size_download] => 0
[speed_download] => 0
[speed_upload] => 0
[download_content_length] => -1
[upload_content_length] => -1
[starttransfer_time] => 0
[redirect_time] => 0
[redirect_url] =>
[primary_ip] =>
[certinfo] => Array
(
)
[primary_port] => 0
[local_ip] =>
[local_port] => 0
)
7 Failed to connect to www.someaddress.com/export/: Connection timed out
當然,我已經研究和嘗試了很多的方案張貼在這裏,增加超時時間,嘗試了資源的SSL版本,並打了很多不同curl_setopt但之前,我總是失敗從5.5應用程序連接。
我知道一些關於5.5上cURL擴展的改變,但我可以通過谷歌搜索找到指向上傳的問題,我也嘗試了完全不同的選項,比如使用file_get_contents並且什麼都沒有,只是超時。
兩臺服務器位於同一地點,URL完全打開,所以我真的懷疑問題出在文件位置,因爲當我在5.3服務器上運行代碼時,仍然可以正常工作。
我知道這一點,正如我在評論中所說的,我知道CURLFile類,但是這個文件對象僅用於從已有的本地文件上傳到服務器。 但是,即使我採取了 curl_setopt($ curl,CURLOPT_FILE,$ fd); 出了代碼,並嘗試只是抓住內容,我仍然得到了資源的時間... – Sandman21dan
@ Sandman21dan已啓用CURLOPT_SAFE_UPLOAD? – fortune
也是一個參考鏈接http://stackoverflow.com/questions/25180366/writing-the-following-curl-in-php – fortune