2012-05-14 170 views
-1

我有以下代碼:寫入文件PHP

$cachefile = "http://www.DOMAIN.com/users/{$user}.php"; 
$fp = fopen($cachefile, 'w'); // open the cache file "cache/home.html" for writing 
fwrite($fp, ob_get_contents()); // save the contents of output buffer to the file 
fclose($fp); // close the file 
ob_end_clean(); // Send the output to the browser 

chmod($cachefile, 0644); 

文件路徑是無效的,因爲它產生這個錯誤:Warning: chmod() [function.chmod]: No such file or directory in ...

然而,這段代碼:

$cachefile = "{$user}.php"; 
$fp = fopen($cachefile, 'w'); // open the cache file "cache/home.html" for writing 
fwrite($fp, ob_get_contents()); // save the contents of output buffer to the file 
fclose($fp); // close the file 
ob_end_clean(); // Send the output to the browser 

chmod($cachefile, 0644); 

文件 - 使用第二個代碼塊 - 與創建它的腳本創建在相同的文件夾中。不過,我想將它保存到第一個區塊的位置。我在php.net上尋找fopen,我沒有看到我做錯了什麼,但顯然我是。

EDIT(註釋響應):

我也試過$cachefile = $_SERVER["DOCUMENT_ROOT"] . "https://stackoverflow.com/users/{$user}.php"無濟於事。

+2

您無法打開通過HTTP寫入的遠程URL。如果它是您自己的服務器,請使用相對路徑。 – Ryan

+1

你不能chmod一個遠程文件。如果該文件位於本地服務器上,則使用非URL路徑指向它。 –

回答

1

你需要使用的完整路徑的文件服務器上,而不是網址:

$cachefile = "/var/www/path/to/users/{$user}.php"; 
2

你不能寫使用fwrite()遠程文件。如果您正在寫入位於您自己的服務器上的文件,請使用相對路徑。

0

無法打開遠程文件,你只能在本地文件系統中編輯文件,如果文件是在文件系統上,那麼你必須使用相對路徑,

而且不是使用的fopen,你可以只需使用file_get_contents()file_put_contents()即可。