如何将PHP中的文件保存到高于当前目录的目录中


How can I save a file in PHP to a directory higher than current?

脚本位于myusername/public_html/item/index.php 中

保存文件的代码:

$filename = $_SERVER['DOCUMENT_ROOT'].'/../data/guestbook.txt';
        $filehandle = fopen($filename, 'ab+') or die("<p>Unable to create the file!</p>'n".$filename);
        flock($filehandle, LOCK_EX) or die("<p>Unable to lock the file!</p>'n");
        fwrite($filehandle, $new_entry) or die("<p>Unable to write to the file!</p>'n");
        fclose($filehandle);

由于某种原因,它在fopen上失败了,文件名实际上最终是/../而不是导航到正确的路径。

该做什么,该做什么?

如果php脚本在item文件夹中,并且item和数据在目录层次结构中处于同一级别,则可以进行这样的代码

$savedir = '../data/';
$filename = $savedir.'guestbook.txt';

确保apache用户通过"chown-R apache:apache"answers"chmod 755"对目录具有写访问权限。

可能是代码中的"/../"导致了错误。尝试删除第一个正斜杠。

由于某种原因,它在fopen 上失败

编程中没有"某些原因"。总有一定的原因
你必须知道。

文件名实际上是用/../

这正是你写的,没有什么可抱怨的。

如何将PHP中的文件保存到高于当前目录的目录中?

从技术上讲,你是在纠正它。

但可能还有另一个原因,除了错误的路径创建方式
是的,程序失败的原因总是很多的!

该做什么,该做什么?

运行此代码并查看它的内容。

ini_set('display_errors',1);
error_reporting(E_ALL);
$filename = $_SERVER['DOCUMENT_ROOT'].'/../data/guestbook.txt';
file_put_contents($filename,$new_entry);

它会告诉你它失败的原因。