【问题标题】:Running a PHP program in Ubuntu - fopen("filename", "w"): Failed to open stream: Permission denied在 Ubuntu 中运行 PHP 程序 - fopen("filename", "w"):无法打开流:权限被拒绝
【发布时间】:2016-08-25 07:06:06
【问题描述】:

我使用 Ubuntu 作为我的操作系统,并且我在其中安装了 XAMPP。在htdocs 文件夹中,我创建了一个项目文件夹,其中有index.php 文件。现在在 index.php 中,一部分代码是这样做的:

fopen("colors_new.csv", "w");

来自manual

'w' 只为写入而打开;将文件指针放在开头 文件并将文件截断为零长度。 如果文件没有 存在,尝试创建它。

但是我没有创建文件,而是得到了

Warning: fopen(colors_new.csv): failed to open stream: Permission denied...

当我查看项目文件夹时,colors_new.csv 文件并未创建。

当我在另一台运行 Windows 操作系统的计算机上运行此程序时,它运行成功。文件已成功创建。

如何在 Ubuntu 中解决这个问题?

我尝试了什么:

我尝试运行 sudo chmod 777 colors_new.csv,但得到 chmod: can not access colors_new.csv. No such file or directory.。当终端在项目目录中时,我仅使用文件名(如图所示)进行了尝试;以及提供文件的完整绝对路径。两次都出现同样的错误。


注意:我看到了其他问题,如上所述,我尝试授予文件权限。其他问题没有解决问题,下面接受的答案确实解决了。

【问题讨论】:

  • 在运行 chmod 命令之前,您必须在文件的位置。否则会抛出错误:chmod: can not access colors_new.csv。没有这样的文件或目录
  • 问题不在于文件,因为它不是创建的,而是文件夹/目录,您很可能没有在目录/文件夹中创建文件的权限

标签: php csv ubuntu fopen


【解决方案1】:

这意味着您没有权限在您的 index.php 所在的目录中写入文件。你可以做几件事来让它发挥作用

  • 授予对目录的文件写入权限。 如果设置正确,则使用 755 和文件 644 就足够了。永远不要满777,这是安全风险。

  • 在您的目录中创建一个子目录,并授予足够的权限 (755) 来执行您想要的操作。 菲fopen('./files/colors_new.csv)

【讨论】:

    【解决方案2】:

    为要写入文件的文件夹提供写入权限。您的问题将得到解决。

    【讨论】:

    • 我该怎么做?
    • @Jesss 与您对文件所做的相同,通常您的文件夹需要有755775,具体取决于您的系统设置方式。但是那里有很多教程。
    • chmod 选项权限文件名
    猜你喜欢
    • 2016-02-16
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 2013-03-21
    • 2018-07-23
    • 2019-05-02
    • 2016-06-13
    • 2015-11-15
    相关资源
    最近更新 更多