写入文件PHP

时间:2012-05-14 02:43:17

标签: php file buffer chmod

我有以下代码:

$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并且我没有看到我做错了什么,但显然我是。

编辑(评论回复):

我也试过$cachefile = $_SERVER["DOCUMENT_ROOT"] . "/users/{$user}.php"无济于事。

3 个答案:

答案 0 :(得分:2)

您无法使用fwrite()写入远程文件。如果您要写入自己服务器上的文件,请使用相对路径。

答案 1 :(得分:1)

您需要使用服务器上文件的完整路径,而不是网址:

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

答案 2 :(得分:0)

你无法打开远程文件,你只能编辑本地文件系统上的文件,如果文件在文件系统上,那么你必须使用相对路径,

也可以使用file_get_contents()file_put_contents()而不是使用fopen。