【问题标题】:Can't make files/dir writable by php无法通过 php 使文件/目录可写
【发布时间】:2015-09-22 04:49:23
【问题描述】:

在 CentOS 7 机器上使文件和目录可由 PHP 写入时遇到问题

我已经搜索了网络和站点,但没有找到适合我的解决方案(我对 linux 还很陌生)。

到目前为止,我已经尝试了以下,关于为什么文件/目录仍然不能被 PHP 写入的任何想法?

sudo chown -R apache:apache ss/
sudo chmod -R g+rw ss/

sudo chmod -R 777 ss/

用 echo getmyyuid().':'.getmygid(); 找到 id 后也尝试了以下命令

sudo chown -R 1000:1000 ss/

我已经运行了以下命令

# egrep -i '^user|^group' /etc/httpd/conf/httpd.conf
User apache
Group apache

ls -Zd ss/
drwxrwxrwx. apache apache unconfined_u:object_r:httpd_sys_content_t:s0 ss/

【问题讨论】:

  • 您使用的 PHP 代码是什么?您确定您正在访问正确的目录/文件吗?另外,目录“ss”的“ls -la”输出是什么?
  • 展示你尝试过的东西
  • 您在使用上面的命令时真的没有收到任何错误吗? http服务器执行的帐号是什么?该帐户和组真的称为“apache”吗?这不是很常见...然后:您要使用的文件夹ss 位于哪里?使用绝对寻址可能不太容易混淆。一般来说:0777 的文件权限通常不需要,这是一个非常糟糕的习惯。你不应该使用它。它在您的系统中引入了一个巨大的安全漏洞。
  • 这个文件夹的安全上下文是什么?用ls -Zd ss/检查它
  • 我在另一个答案中使用了以下命令中的帐户和组 apache # egrep -i '^user|^group' /etc/httpd/conf/httpd.conf User apache Group apache The ss folder位置是 /var/www/html/ss 安全上下文命令返回 drwxrwxrwx。 apache apache unconfined_u:object_r:httpd_sys_content_t:s0 ss/

标签: php linux file-permissions silverstripe


【解决方案1】:

这似乎是一个 selinux 限制,尝试将上下文更改为 httpd_sys_rw_content_t 使用:chcon -R -t httpd_sys_rw_content_t ss/

问候,

【讨论】:

    猜你喜欢
    • 2017-02-09
    • 2011-03-12
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 2018-01-01
    • 2014-07-09
    • 1970-01-01
    • 2016-06-07
    相关资源
    最近更新 更多