在PHP中创建并保存一个txt文件到根目录

89

我正在尝试创建并保存一个文件到我的站点根目录,但我不知道它在哪里创建了这个文件,因为我看不到任何东西。如果可能的话,我需要每次覆盖该文件。

这是我的代码:

$content = "some text here";
$fp = fopen("myText.txt","wb");
fwrite($fp,$content);
fclose($fp);

如何将其设置为保存在根目录下?


在我看来,那看起来是正确的。只要脚本位于您的网站根目录中,那就应该没问题。唯一可能会阻止它的是您的权限。 - seanbreeden
1
如果您有权限,请尝试使用 $fp = fopen("/myText.txt","wb"); - Vinayak Garg
除了是一个糟糕的想法,看起来像黑客行为,只需确保指定完整路径并具有足够的权限。 - Mikhail
7
将您的网站根目录设置为777是一个非常糟糕的主意。 - seanbreeden
4个回答

154

它创建的文件与你的脚本在同一个目录下。尝试使用这个方法代替。

$content = "some text here";
$fp = fopen($_SERVER['DOCUMENT_ROOT'] . "/myText.txt","wb");
fwrite($fp,$content);
fclose($fp);

7
注意:这需要对你正在写入的目录具有写入权限。 - mboy
我无法将内容写入该文件。我该怎么办? - huykon225

18
如果您在Apache上运行PHP,则可以使用名为DOCUMENT_ROOT的环境变量。这意味着路径是动态的,并且可以在服务器之间移动而不会影响代码。
<?php
  $fileLocation = getenv("DOCUMENT_ROOT") . "/myfile.txt";
  $file = fopen($fileLocation,"w");
  $content = "Your text here";
  fwrite($file,$content);
  fclose($file);
?>

2

这个问题早在多年前就被提出过,但是现在我们可以用PHP5或更新版本来进行更现代化的方法。

  $filename = 'myfile.txt'
  if(!file_put_contents($filename, 'Some text here')){
   // overwriting the file failed (permission problem maybe), debug or log here
  }

如果在该目录中文件不存在,则将创建该文件,否则将被覆盖,除非设置了FILE_APPEND标志。file_put_contents是自PHP5以来可用的内置函数。 file_put_contents文档

0

fopen()函数将在执行该命令的文件所在目录中打开一个资源。换句话说,如果您只是运行文件~/test.php,则脚本将创建~/myText.txt。

如果您使用任何URL重写(例如在MVC框架中),这可能会有点混乱,因为它很可能会在包含根index.php文件的目录中创建新文件。

此外,您必须设置正确的权限并可能需要在写入文件之前进行测试。以下内容将帮助您进行调试:

$fp = fopen("myText.txt","wb");
if( $fp == false ){
    //do debugging or logging here
}else{
    fwrite($fp,$content);
    fclose($fp);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接