PHP mkdir() 权限被拒绝

PHP mkdir() 权限被拒绝

我在 PHP 脚本中使用 mkdir() 时一直出现权限被拒绝的情况。

mkdir:无法创建目录:权限被拒绝:

$mount = shell_exec( "mkdir -p {$mntdir}/{$hostname} 2>&1");

我尝试写入文件夹

/home/user/mnt

当我在命令行中输入以下内容时它确实有效,那么我缺少哪些权限?

php -r "shell_exec('mkdir -p /home/user/mnt/test');"

RHEL7/PHP 版本 5.4.16

任何帮助将非常感激!

答案1

selinux 是否生效?

使用命令检查

sestatus 

如果强制执行 - 然后尝试设置此参数

setsebool -P httpd_enable_homedirs true

您还可以通过以下方式监视 selinux 拒绝消息

sealert -a /var/log/audit/audit.log

答案2

为什么不使用 php 函数mkdir

if (!mkdir($dir, 0755, true)) {
    die('Failed to create folders...');
}

如果您启用了警告,则当目录已存在或者您没有该目录的权限时,您将收到警告。

答案3

在没有看到配置的情况下,我认为问题出在运行 PHP 脚本的用户身上。

当您通过命令行 PHP 从 shell 运行脚本时,您将以当前登录用户的身份运行该脚本,该用户有写入的权限/home/user/mnt

但是,您的 Web 服务器 PHP 进程正在以另一个用户身份运行,该用户没有写权限,因此创建失败。

相关内容