2012-03-25 49 views
1

脚本是名为myusername /的public_html /项目/ index.php文件如何将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失败,文件名是实际上结束了的是字面上/../而不是导航到正确的路径。

怎么办,该怎么办?

+0

您是否检查目录/文件权限以确保您有权访问?我记得写代码几乎可以写入任意位置。 – ashes999 2012-03-25 03:00:08

+0

@ ashes999是的,我可以访问数据目录:/ – antonpug 2012-03-25 03:02:44

+0

$ _SERVER ['DOCUMENT_ROOT']的输出是什么? – 2012-03-25 03:08:15

回答

0

,你可以像这样的代码如果PHP脚本是在项目文件夹,项目和数据都在目录层次结构

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

确保Apache用户在同一水平已经由写目录的访问权限“chown -R apache:apache”和“chmod 755”。

您的代码中的“/../”可能是错误。尝试删除第一个正斜杠。

0

出于某种原因,它则fopen

失败有一个在节目没有“某些原因”。总有一定的原因。
你必须知道它。

文件名实际上是结束了与/../

这是你写什么,没什么可抱怨的是字面上。

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

从技术上讲,您正在设置它是正确的。

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

怎么办,该怎么办?

运行此代码,看看它说什么。

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

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

相关问题