php mkdir() 权限被拒绝 mac
Posted
技术标签:
【中文标题】php mkdir() 权限被拒绝 mac【英文标题】:php mkdir() permissions denied mac 【发布时间】:2012-03-22 09:26:42 【问题描述】:这似乎是一个常见问题,但我似乎无法找到我正在寻找的确切答案。 我在 OSX 上运行 XAMPP,并且在我的网络应用程序中,如果新的一年不存在目录,我试图允许管理员创建一个目录。因此,在 htdocs/mywebapp/images 下,如果某个目录不存在,例如 2012 年,则 mkdir() 并开始将文件上传到该目录。
从 mywebapp 目录运行 ls -l 显示 images 目录创建为
drwxr-xr-x 18 myusername admin 612 Feb 12 17:32 images
所以我尝试的第一件事是
sudo chmod 0775 images
这没有帮助。查看 httpd.config 文件显示用户/组定义为 www:www 所以我尝试将所有者/组更改为:
sudo chown www:www images
结果如预期:
drwxrwxr-x 18 _www _www 612 Feb 12 17:32 images
但是,我再次收到 Permission denied 错误。所以,我不知道我的下一步是什么。 我用来达到这一点的 php 代码在这里:
$directory_self = dirname(__FILE__);
$base_image_path = $directory_self . '/images/'; // outputs "/Applications/XAMPP/xamppfiles/htdocs/mywebapp/images/"
$year = '2012';
$image_path = $base_image_path . $year . '/'; // outputs "/Applications/XAMPP/xamppfiles/htdocs/mywebapp/images/2012/"
if(!file_exists($image_path))
mkdir($image_path, 0775);
感谢您的帮助。
【问题讨论】:
【参考方案1】:尝试检查真正的进程所有者:
$processUser = posix_getpwuid(posix_geteuid());
echo($processUser['name']);
【讨论】:
啊...它显示“nobody”。所以我应该对nobody chown:[group???] ...但我很好奇如果用户在配置文件中定义为www,为什么进程所有者将是nobody。另外,我如何在终端中找到真正的进程用户?谢谢! 我看到如果我运行 $processGroup = posix_getgrgid($processUser['gid']);回声 $processGroup['name'];该组是“无人”...所以我现在就试试。而且,是的,它起作用了,我能够 mkdir()。 另一个问题是为什么使用 mkdir(filepath, 0755) 指定权限与 mkdir(filepath, 0775) 没有什么不同...都在创建目录后显示 drwxr-xr-x。跨度> 官方文档里有一句话,看一下:php.net/manual/en/function.mkdir.php。关于 umask。以上是关于php mkdir() 权限被拒绝 mac的主要内容,如果未能解决你的问题,请参考以下文章
Centos 7 / Apache / PHP - mkdir():权限被拒绝
PHP的datelog localhost在mac权限被拒绝
Phpmyadmin 5.1.0.RC1 & 5.0.4 错误(./libraries/classes/Config.php#1285 mkdir() 中的警告:权限被拒绝)