基本上,我有一個簡單的cURL提取網頁功能,其中包括以下內容;PHP cURL - 隨機 - 不工作,錯誤調試沒有提供任何信息
function FETCH_WEBPAGE($url) {
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, $url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30');
$file = curl_exec($curl_handle);
if($file===false) {
DEBUG_TXT('Error reading '.$url.chr(10).curl_error($curl_handle));
} else {
DEBUG_TXT('Fetching: '.$url.' - Got: '.$response['url'].chr(10).$file);
}
$response = curl_getinfo($curl_handle);
curl_close($curl_handle);
if(trim($response['url'])=='') {
$response['url'] = $url;
}
return array('file'=>$file,'url'=>$response['url']);
}
現在,我運行了我自己的Apache服務器,並且還有一臺運行Apache的專用服務器。當我從我自己的機器上運行這些代碼時,一切都很順利。只要我請求的服務器可用,我的DEBUG_TXT就會返回「獲取/獲得」(帶有內容)響應。 (它創建一個調試文本文件。)
但是,當我從我的專用服務器運行此我無法得到它的工作。我總是收到錯誤「無法找到主機」或「名稱查找超時」作爲我的cURL錯誤。
STRANGEST THING對於網站的其他用戶來說,該功能的工作原理是PERFECTLY FINE,即使試圖訪問相同的URL也不會給出錯誤。爲了我的生活,我無法理解爲什麼這種選擇性不適合我和我單獨工作。
編輯:
我應該指出,curl_getinfo()似乎爲我工作,即使curl_exec()不會。例如,我可以獲取標題信息,但是curl_exec()仍然會失敗。這很困擾我,因爲這似乎與我網站上的用戶帳戶直接相關 - 可能我爲自己獲取Cookie信息的方式與此錯誤有關?我無法想象它會是怎樣的,但它實際上是唯一的區別(就PHP解釋器而言),我如何處理我個人使用該功能的方式與網站上的其他用戶之間的差異。
此外,通過SSH連接時,我可以成功地ping通我嘗試從我的專用計算機訪問的網站。
您能否澄清您對「網站的其他用戶」的含義?你的意思是,當其他人訪問你的專用服務器上的PHP腳本,它的作品? –
您是否嘗試通過SSH在命令行上運行nslookup?錯誤消息似乎表明名稱解析存在問題。 –
@JakobEgger - 這個函數只是解析/解釋用戶輸入的一個更大的腳本的一部分。當其他人向腳本提交信息時,FETCH_WEBPAGE()函數按其應有的方式工作。當我個人使用它時,它不會。我把它縮小到curl_exec上,因爲$ url被傳遞給函數。 此外,剛剛嘗試過nslookup現在通過SSH,並解決罰款。 – kwh