【问题标题】:PHP Create and Save a txt file to root directoryPHP创建一个txt文件并将其保存到根目录
【发布时间】:2021-06-22 21:31:04
【问题描述】:

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

这是我的代码:

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

如何设置保存到根目录?

【问题讨论】:

  • 这对我来说是正确的。只要脚本位于您的网络根目录中,就可以了。唯一可以阻止它的是您的权限。
  • 如果你有权限试试$fp = fopen("/myText.txt","wb");
  • 除了是一个坏主意和看似骇人听闻的东西,只要确保指定完整路径,并拥有足够的权限。
  • 在您的网络根目录上设置 777 是一个非常糟糕的主意。

标签: php


【解决方案1】:

它在与您的脚本相同的目录中创建文件。试试这个吧。

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

【讨论】:

  • 请注意:这需要对您正在写入的目录具有写权限。
  • 我无法将内容写入该文件。我该怎么做?
【解决方案2】:

如果您在 Apache 上运行 PHP,则可以使用名为 DOCUMENT_ROOT 的环境变量。这意味着路径是动态的,并且可以在服务器之间移动而不会弄乱代码。

<?php
  $fileLocation = getenv("DOCUMENT_ROOT") . "/myfile.txt";
  $file = fopen($fileLocation,"w");
  $content = "Your text here";
  fwrite($file,$content);
  fclose($file);
?>

【讨论】:

    【解决方案3】:

    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);
    }
    

    【讨论】:

      【解决方案4】:

      这个问题早在几年前就被问过了,但这里是使用 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 开始就可以使用。

      Documentation for file_put_contents

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-25
        • 1970-01-01
        • 1970-01-01
        • 2015-03-03
        相关资源
        最近更新 更多