当前位置: 首页 > 面试题库 >

Centos 7 / Apache / PHP-mkdir():权限被拒绝

巫马盛
2023-03-14
问题内容

大喊之前,请重复!把我放进深渊,听我说。:)

我一直在为与我合作的公司开发一个Intranet站点,最初我是直接从运行 Windows 7 / IIS的
工作站开发它的。当我接近站点/应用程序的完成时,我得到了一个运行 ApacheCentos 7
盒子,因此我开始了将其迁移到该系统的过程。我已经解决了大部分次要问题,并且现在使网站开始运行。但是,网站的一部分与我们的数据库进行交互,并根据登录人员创建日志目录/文件。这部分利用了mkdir()函数,但我遇到了权限问题。

mkdir(): Permission denied

这是我已经完成的工作:

  • 由于我使用的是Centos 7,因此Apache用户/组是apache:apache。我利用chown并将/ var / www / html /的所有者和Logs文件夹更改为apache用户/组。为了安全起见,我仔细检查了httpd.conf并检查了正在运行的进程,以确保我拥有正确的用户/组。
  • 我仅出于测试目的,尝试将所有这些文件夹的权限更改为chmod 777,但出现相同的错误。
  • 从上到下搜索StackOverflow,仅获得我已经尝试过的答案,但无济于事。

因此,无论我使用chmod还是chown更改正在访问的文件夹的权限,都会遇到相同类型的错误。为了安全起见,我还检查了PHP用户,它也使用了apache用户。

如果即使更改了权限,任何人都可能对它为什么不起作用有更多的了解,请赐教。如果我碰巧错过了一篇解释这种特殊情况的文章,那就大喊一声,把我放逐到深渊。大声笑
:)

编辑 好的,因此在进一步测试中,我发现了2个似乎引起此总体问题的问题。

  1. 当使用脚本创建文件夹时,PHP尝试设置该文件夹的权限,即使apache是​​所有者,服务器似乎也不喜欢这样。删除该部分代码后,权限错误消失了,并且出现“没有此类文件或目录”的错误。
  2. 当通过sudo与用户Apache测试创建目录时,它能够创建目录没有问题。但是,我的PHP脚本正在创建2个目录,然后在最后一个目录中创建一个日志文件。看来您无法同时创建两个目录?例如,已经创建了一个Logs文件夹,PHP试图在其下创建两个目录,一个目录用于输入用户的ID,然后在其中的另一个文件夹中添加日期。因此,一旦PHP脚本运行,它应该创建类似“ Logs / 5235 / 3-3-2015 /”的内容

只是要注意,我试图在PHP的mkdir上将递归值设置为true,但这是当我得到最初指出的权限问题时。删除递归/模式后,它不会出现权限问题,但无法创建嵌套目录。

编辑2

为了检验我的理论,我删除了嵌套,并尝试使mkdir仅创建1个目录,并且它生成的错误与以前相同。尽管它是Apache拥有的,即使我将其设置为777,它也会抛出权限问题。


问题答案:

可能是,尽管您拥有755/777权限,但SELinux阻止了httpd编写/创建目录。

尝试:

chcon -R -t httpd_sys_content_t /path/to/www
chcon -R -t httpd_sys_content_rw_t /path/to/www/dir/for/rw

更多信息:http :
//wiki.centos.org/TipsAndTricks/SelinuxBooleans



 类似资料:
  • 我已经搜索了几个小时了,但找不到解决方案,即使有类似的问题。 我试图在一个全新的laravel安装上运行php artisan tinker,用户是网站管理员(项目目录demo的所有者),但我遇到了以下错误: 使用详细标志运行: 异常跟踪:照亮\Foundation\Bootstrap\HandleExceptions- 希望有人能给我一个提示。谢谢 分布:Raspbian GNU/Linux8(

  • 我试图运行一个本地Jenkins管道使用Jenkinsfile的nodejs应用程序使用节点:6-alpin图像(默认)使用build.sh脚本使用调用npm安装然后我得到了以下权限错误 npm ERR!错误:EACCES:权限被拒绝,mkdir'/. npm'npm ERR!在错误(本机)npm ERR!{错误:EACCES:权限被拒绝,mkdir'/. npm'npm ERR!在错误(本机)n

  • 我试图在MacOS10.12上安装sudoNPM-gappium。5. 我得到这个错误: 信息Chromedriver安装为平台“mac”和架构“64”安装Chromedriver版本“2.30” 信息Chromedriver安装打开临时文件以将Chromedriver\u mac64写入。。。 错误:EACCES:权限拒绝,mkdir “/usr/local/lib/node_modules/a

  • 我已经对Apache2进行了设置。4 FastCgi、PHP-FPM、SuExec,无需SuExec即可正常工作。但当我启用Suexec时,它的给我文件不存在错误(当我访问php脚本时,浏览器中出现404未找到错误)。 注意:当我关闭“FastCgiWrapper”时,PHP脚本可以通过PHP-FPM工作,但当我打开它时,会出现404错误。 Apache错误日志(最后一行): 配置: /etc/a

  • 我在尝试在React应用程序中构建docker容器时遇到了权限错误。 我试图利用社区答案,但没有帮助。 在相关讨论之后,我尝试了: 我得到当前用户: 尝试了这个: 这也抛出了相同的错误: 与此相同: 添加用户没有帮助: 尝试授予安装权限: 另一个尝试是删除node_modules并安装指定: 将此添加到docker compose文件也没有帮助: 我正在尝试使用以下命令构建: Dockerfile

  • 我正在使用Docker Compose运行多个容器,包括一个带有Postgres映像的容器。我正在尝试向该容器添加一个卷,以跨容器构建持久化我的数据。但是,当它尝试在容器中为该卷创建目录时,我收到了一个错误。 我运行: 然后 docker compose up 我收到以下错误: 错误:对于cxbenchmark\u db\u 1,无法启动服务db:oci运行时错误:container\u linu