本文以Ubuntu为例,其他的Linux系统类似。
环境为Apache + PHP搭建的web服务器
假设网站根目录为/var/www/html
问题:
直接通过shell执行PHP,在网站目录下面读写文件没有问题,但是通过浏览器访问php,却不能写文件。
原因:
Apache是通过用户www-data来执行PHP的,所以PHP能够做什么,取决于用户www-data能做什么?一般情况下,www-data用户并没有在www/html下面写文件的权限,所以PHP在通过浏览器访问的时候是没有办法写入文件的。
解决办法:
可以简单的把www/html或者www/html下面的某个子目录比如/var/www/html/download的所有者设置为www-data,这样PHP就可以正常写文件。
命令:sudo chown -R www-data /var/www/html