php创建文件的权限

标签 php apache ubuntu fopen

我在 lubuntu 上运行 apache 服务器,并尝试使用 php 编写用户可以下载的文本文件。我更改了权限,如下所示:

sudo chmod 775 /var/www -R

但是当我执行脚本时仍然出现错误:

Warning: fopen(3): failed to open stream: Permission denied in /var/www/myPage.php on line 217 Could not open file!



这是php代码:
    $filename = $liste[0][0];

    $fh = fopen($filename, "x+") or die("Could not open file!");

    fwrite($fh, "foo") or die("Could not write to file");

    fclose($fh);

我需要更改其他权限吗?还是有另一种方法可以做我想做的事情?
谢谢

最佳答案

写入文件夹需要 Apache 用户对该文件夹具有写入、读取和执行权限。

  • 因此,首先尝试识别 Apache 用户的名称(通常是 www-data)。
  • 然后检查该用户是所有者还是您要写入文件的文件夹的组。
  • 为该用户授予对该文件夹的写入、读取和执行 (7) 权限。授予不需要在同一文件夹上写入读取和执行权限 (5) 的其他所有人。
  • (推荐)为 www-data 用户授予对文件的写入和读取 (6) 权限。其他人只需要读取权限 (4)。

  • 如果 www-data 既不是文件的所有者也不是文件组,那么您应该更改其中任何一个。完成此操作后,如果您使用 www-data 和 root 以外的用户(如“webeditor”)访问服务器,并且该用户既不是所有者也不是组中的用户,您可能会发现自己无法访问 web 文件夹。

    我建议:
  • 将所有者和组设置为 Apache 用户/组。
    chown -R www-data:www-data /var/www
    
  • 将 webeditor 用户(或用于连接到 ssh 或 ftp 上的服务器的任何用户)添加到 www-data 组。
    usermod -a -G www-data webeditor
    
  • 将文件夹的写入、读取和执行权限授予所有者。避免其他人的写作特权。
    find /var/www -type d -exec chmod 755 {} \;
    
  • 文件不需要执行权限。 www-data用户只需要读写,其余只需要读取权限,所以644对于我们的文件来说就足够了。
    find /var/www -type f -exec chmod 644 {} \;
    
  • 关于php创建文件的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36765391/

    相关文章:

    linux - Ubuntu 上的 Azure 用户定义端点无法正常工作

    php - 优化小型 MySQL 连接查询

    php - 为什么 Apache 不能在 XAMPP 安装中启动?

    java - 刚刚将我的hadoop集群升级到2.4.1,并且一切正常

    linux - ubuntu 14.04 上的灯。只想要 localhost - 怎么样?

    ubuntu - 用于 Linux 的 CMake GUI 在哪里?

    php - 在 PHP 中合并两个数组

    PHP基本运算符

    java - 对上传的文档建立索引 - 只能由上传这些文档的用户搜索

    java - 哪种传输 JSON 数据的方式更优化?