PHP中 mkdir: Permission denied 问题

今天某老油条告诉我说微信扫码支付用不了了,让我去看看咋回事。后面看了下日志发现有报错 信息如下 mkdir(): Permission denied...

因为扫码支付需要生产二维码,在生成二维码的时候创建了指定目录存放,这一看就是权限问题,没有足够的权限去创建目录。肯定以前有人暴力 777 加超级用户组更改了所有目录。 这也要丢给我…

然后发现这个问题还挺常见的好多人遇见,写下记录吧!


问题原因

这是一个老生常谈的问题了,我觉得它需要一个更好的回答。你不应该暴力的给目录赋予 777 的读写权限,这会产生严重的安全隐患。产生的原因一般是你的Web服务器 比如 Nginx、Apache 的用户对于目录没有 读/写 权限造成的。

解决办法

1.找到Web服务器设置的用户组和用户。一般用户组和名 是 www-data 或者 www,下面用 www-data 举例

2.更改对应没有权限的目录设置它的所属组和用户为 www-data

1
chown -R www-data:www-data /path/www/dir

3.对 www-data 组下的所有成员设置目录的 读写 权限

1
chmod -R g+rw /path/www/dir

搞定!

参考

stackoverflow


-------------The End-------------