【问题标题】:PHP can't create file, permission deniedPHP无法创建文件,权限被拒绝
【发布时间】:2019-09-04 16:52:43
【问题描述】:

我正在尝试在使用 apache 和 MySQL 的 CentOS 驱动的服务器上运行一些 PHP 应用程序。我的应用程序必须在服务器上创建文件,但它总是说创建文件的权限被拒绝。

文件位于/var/www/html。我什至尝试将777 权限设置为html 文件夹和html/*。我将 apache 用户和组更改为存在的 myuser,然后重新启动 apache。我将 html 文件夹和其中所有文件的所有权更改为 myuser。我什至尝试将文档根目录更改为/home/myuser/public_html

我试过这段代码来测试写权限。文件位置为/var/www/html/index.php/home/myuser/public_html/index.php

$handle = fopen("a.txt", "w");
fwrite($handle, "test");
fclose($handle);

我对这个问题感到非常惊讶。相同的配置适用于我的另一台 Ubuntu 服务器。

这里一定有天才,帮帮我。

【问题讨论】:

  • 您明白将权限设置为777 是非常糟糕的做法,对吧?
  • 检查你的目录权限应该是www-data
  • 检查文件a.txt的权限
  • Omi,a.txt 不存在,脚本必须创建。
  • Venkat Lokeswar,apache 的用户和组已更改为 mysuer 和 myuser,因此可能没有任何意义。

标签: php apache permissions centos


【解决方案1】:

您需要允许服务器用户对您的目录进行写操作,使用以下命令,如果是多级目录使用 -R 标志。

sudo chown www-data my-dir

【讨论】:

  • Apache 用户已更改为 myuser,public_html 目录归 myuser 所有。
  • 通常我们会给整个项目目录的权限
【解决方案2】:

您可以在代码中尝试chmod($handle, 0777),而不是手动授予权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多