【问题标题】:Having trouble writing to a file with PHP on Ubuntu在 Ubuntu 上使用 PHP 写入文件时遇到问题
【发布时间】:2014-08-22 03:52:20
【问题描述】:

我在 Ubuntu 14.04 上运行 PHP 5.5.9。我在写入文件时遇到问题。我觉得这一定是文件权限问题,因为我很确定代码是正确的。我登录的用户有权写入我要写入的文件夹,但我不确定本地主机是否有。我不确定 localhost 用户的名称是什么才能使用chmod。我尝试使用chmod 777 -R /var/www/html,但脚本仍然无法写入我的目标文件夹,该文件夹的路径为/var/www/html/Projects/MD_ScrapingTool/files。这是我的代码:

$file = 'filetest.txt';
if($handle = fopen($file, 'w')) {
    $content = "123\n456";
    fwrite($handle, $content);
    fclose($handle);
} else {
    echo "Could not open file for writing.";
}

【问题讨论】:

  • 在您的 PHP 文件顶部使用 error_reporting(E_ALL),输出什么错误?
  • 运行这段代码会发生什么?你看到你的回声声明了吗?如果是这样,则意味着您无法打开文件句柄,这可能表明您为文件指定的路径不正确。您可以尝试使用文件的绝对路径。您也可以使用 is_file 和 is_writable 来帮助您进行调试。此外,您可以考虑使用 file_put_contents 而不是使用 fopen、fwrite 和 fclose。
  • 如果您自己解决问题,您应该将其发布为答案。请不要编辑问题来添加答案。

标签: php apache ubuntu file-io file-permissions


【解决方案1】:

经过更多研究,我已经弄清楚了。以下是遇到相同问题的任何人的解决方案:

由于 localhost 属于 www-data 组,我只是将我的用户添加到该组。

sudo usermod -a -G www-data my_username

然后,我将文件夹添加到组中。

sudo chgrp -R www-data /var/www

然后,我将写入权限授予 www-data 组。

sudo chmod -R g+w /var/www

这对我有用,没有任何其他问题。谢谢!

【讨论】:

  • 正是我想要的!谢谢。
  • 你是英雄
【解决方案2】:

您可以验证您是否拥有文件夹“/html/Projects/MD_ScrapingTool/files/”的权限并尝试使用绝对路径。

【讨论】:

    【解决方案3】:

    尝试使用open 给出绝对路径和文件名:

    $file = '/html/Projects/MD_ScrapingTool/files/filetest.txt';
    

    如果文件不存在,fopen 应该使用'w' 模式创建文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-27
      • 2020-10-30
      • 2014-05-11
      • 1970-01-01
      • 1970-01-01
      • 2010-11-12
      • 1970-01-01
      相关资源
      最近更新 更多