2009-09-30 25 views
0

請耐心等待,我試圖學習php和所有關於如何處理文件&安裝在服務器端。一切都很好,直到我最近不得不改變我的託管網站。這個新的託管網站已關閉其url_fopen用cURL加載文件

我以前的腳本使用:

file_get_contents ("that.htm"); 

,但現在我需要使用捲曲。我已經想出瞭如何在沒有任何問題的情況下加載遠程文件。我然後將其保存(仍在使用file_put_contents因爲它沒有限制),並再次訪問該緩存的文件如下:

$path = $_SERVER["PHP_SELF"]; 
$file = replace("this.php","that.htm",$path); 

$ch = curl_init(); 

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

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

*注:「this.php」是文件conatining上面的腳本和「that.htm 「是同一目錄中的緩存文件(它沒有像<html><body>那樣的所有html,但它確實有<table>,如果這有所影響的話)。此外,「that.htm」的文件權限設置爲777.

我的問題是我沒有從$數據中獲得任何輸出(並且我可以看到「that.htm」具有適當的內容作爲我可以直接在瀏覽器中加載文件)。

所以我沒有得到任何輸出設置$文件:

我試圖在$ data後添加一個var_dump,但顯然腳本從來沒有達到那個點。

我敢肯定這是愚蠢的,但在我的網絡搜索和本網站我無法弄清楚(所有的例子只是說「http://example.com」)。

+1

你想要打開一個本地文件或向另一臺服務器發出請求嗎? – RageZ 2009-09-30 06:04:55

+0

這是一個本地文件 – Mottie 2009-09-30 14:34:51

回答

1

它看起來像要訪問與初始腳本文件相同的目錄中的(靜態)文件。在這種情況下,不需要http請求。
當您像這樣增加錯誤報告級別時,腳本會打印什麼內容?

error_reporting(E_ALL); 
ini_set('display_errors', 1); 

file_get_contents ("./that.htm"); 

任何錯誤/警告消息?

+0

大聲笑,完美的作品!好的,爲什麼在url_fopen關閉的情況下工作?......他們可以讓php變得更復雜嗎? – Mottie 2009-09-30 14:34:19

+0

f_g_c('./ that.htm')由文件處理: - 「包裝器」(即本地文件系統)。而url_fopen對這個「包裝器」沒有影響,只對「http:」,「ftp:」等等有效。 – VolkerK 2009-10-01 08:56:55