-1

我有以下代码:

$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"了也没用。

4

3 回答 3

2

您不能使用fwrite(). 如果您要写入自己服务器上的文件,请使用相对路径。

于 2012-05-14T02:46:11.033 回答
1

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

$cachefile = "/var/www/path/to/users/{$user}.php"; 
于 2012-05-14T02:45:58.863 回答
0

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

也可以不使用 fopen,而只使用file_get_contents()and file_put_contents()

于 2012-05-14T02:48:26.710 回答