我有以下代码:
$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"
无济于事。
答案 0 :(得分:2)
您无法使用fwrite()
写入远程文件。如果您要写入自己服务器上的文件,请使用相对路径。
答案 1 :(得分:1)
您需要使用服务器上文件的完整路径,而不是网址:
$cachefile = "/var/www/path/to/users/{$user}.php";
答案 2 :(得分:0)
你无法打开远程文件,你只能编辑本地文件系统上的文件,如果文件在文件系统上,那么你必须使用相对路径,
也可以使用file_get_contents()
和file_put_contents()
而不是使用fopen。