2013-02-26 152 views
0

我從cURL成功導入了一些外部域的數據,直到我嘗試使用這個URI:http://www.airbnb.com/calendar/ical/760186.ics?s=29623a93eb0e693c77591a711f082f06,這是一個日曆。 我可以在命令行上成功運行它(嘗試自己的): shell >> curl https://www.airbnb.com/calendar/ical/760660.ics?s=593cc556438a8f0919beb6107b6f508d,所以這不是網絡問題。cURL表現得很奇怪

但我的PHP腳本(即返回其他URI)不要返回這個。或更好,它返回false。

這裏是PHP小

function file_get_contents_curl($url) { 
    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, FALSE); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 

    $data = curl_exec($ch); 
    curl_close($ch); 
    return $data; 
} 

$ical1= "http://www.airbnb.com/calendar/ical/760186.ics?s=29623a93eb0e693c77591a711f082f06"; 
echo file_get_contents_curl($ical1); 

我覺得這是與我的Apache和PHP的配置,因爲它運行在appfog並與我的老XAMPP安裝目錄中運行。 重新開始:所有URI都與舊的xampp instalation一起工作,現在只是該示例中的一個失敗。

在我的phpinfo()我可以讀:

cURL support enabled 
cURL Information 7.24.0 
Age 3 
Features 
AsynchDNS Yes 
Debug No 
GSS-Negotiate Yes 
IDN No 
IPv6 Yes 
Largefile Yes 
NTLM Yes 
SPNEGO No 
SSL Yes 
SSPI Yes 
krb4 No 
libz Yes 
CharConv No 
Protocols dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, pop3, pop3s, rtsp, scp, sftp, smtp, smtps, telnet, tftp 
Host i386-pc-win32 
SSL Version OpenSSL/1.0.1c 
ZLib Version 1.2.5 
libSSH Version libssh2/1.3.0 
+1

你會得到什麼錯誤信息? – hek2mgl 2013-02-26 17:41:58

+0

這兩個都是有效的工具來下載文件。如果你不說他們有什麼問題,我們不能提供替代方案。 – 2013-02-26 17:42:37

+0

你會得到任何數據,或者在你的日誌/屏幕上出現錯誤嗎? – hexblot 2013-02-26 17:42:38

回答

1

的URL是有效的,可以僅僅通過將URL中的瀏覽器下載沒有問題,所以這不是你的問題。

URL重定向到相同的URL,但是在安全的服務器上,但是您已經設置了CURLOPT_FOLLOWLOCATION,所以這也不是您的問題。

但是,安全URL執行JavaScript重定向到英國網站,而這個您的問題。你正在拉回錯誤的文件。

請嘗試使用網址https://www.airbnb.co.uk/calendar/ical/760186.ics?s=29623a93eb0e693c77591a711f082f06,然後看看它是如何發生的。

+0

它也沒有工作,但我在編輯問題的同時你正在回答。它必須來自我的本地Web服務器,一個直接的Apache配置似乎阻止了這種請求。它適用於像www.google.com這樣的標準頁面。 @jgm:非常感謝您的回答。 – frenesim 2013-02-26 19:03:19

0

我有同樣的問題,我嘗試使用curl和file_get_contents。 我嘗試了下面的內容,它的工作原理,我不知道它爲什麼起作用,它與上面的例子有什麼不同,但它完美地獲取了ICAL文件。

該網址必須是https或顯示空白屏幕。

function file_get_contents_curl($ url){chl = curl_init();

curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_URL, $url); 

$data = curl_exec($ch); 
curl_close($ch); 

return $data; 

}

回波file_get_contents_curl( 'https://www.airbnb.co.uk/calendar/ical/760186.ics?s=29623a93eb0e693c77591a711f082f06');