[英]PHP from root user, mkdir permission denied
今天,我遇到了一种我不理解的奇怪行为。
我正在尝试使用mkdir()
函数使用PHP 7.0脚本在本地磁盘上创建目录,但是会产生“权限被拒绝”错误。
以我的经验(尽管很少),这总是意味着执行PHP脚本的用户无权写入该目录。 这对我来说很有意义, 在开发Web应用程序时通常不是问题。 使用Apache时,默认的PHP用户是www-data
,我没有遇到任何问题。
在这种情况下,尽管我正在使用Zend Framework 2 ,尤其是正在使用它的控制台路由,所以我不会通过Apache(如果我输入错了,请更正我)。 我称我的脚本为:
php index.php route name [--options]
与我的用户( 不是root,而是sudoer )一起使用。 如果我输出PHP的get_current_user()
函数的结果,问题就开始了,因为我得到的是“ root”而不是期望的用户名。 不仅如此,在以下目录中使用mkdir()
时, mkdir()
“权限被拒绝”的情况:
drwxr-xr-x 2 www-data www-data 4096 Aug 19 21:21 logs
我从中了解到,我可能不是PHP所建议的root用户。 如果然后使用“ sudo”在前面运行脚本,则可以创建所需的文件夹,但权限与我在mkdir()
函数中指定的权限不匹配。 如果我写mkdir('path', 0777)
我会得到:
drwxr-xr-x 3 root root
这我不明白。 因此,如果有人可以帮助我弄清楚我在做什么错,我将非常感激。 请记住,我正在通过Zend Framework 2的事实可能会影响此行为(尽管我并不热衷于这样思考)。
预先感谢您的宝贵时间。
编辑。
我只是意识到我没有告诉你我的最终目标是什么,所以我现在将内容放在上下文中,对不起。
我正在尝试使用此脚本(从root或用户 (最好是从用户 )运行)在内部创建这些文件夹
/var/www
然后能够使用标准PHP用户(在我的情况下为www-data )将文件(可能还有其他文件夹)读写到这些目录中
您的PHP运行为apache扩展名,并使用apache权限。 如果需要以root用户身份创建文件夹,则可以为其创建cron脚本,该脚本将监视某些文件中的更改,并以root用户身份创建目录。 使用suid扩展名的另一种方法,但这有点复杂。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.