我(PHP新手)正在我的Linux / Apache服务器上build立一个传统的PHP网站。
当我在浏览器中testing网站时,我得到这个错误:
Warning: move_uploaded_file(/var/tmp/jinfo/Circuit/best_cities.csv): failed to open stream: Permission denied in /var/www/jinfo/includes/jinfo.inc.php on line 89 Warning: move_uploaded_file(): Unable to move '/tmp/phpMLE9Ox' to '/var/tmp/jinfo/Circuit/best_cities.csv' in /var/www/jinfo/includes/jinfo.inc.php on line 89
看起来像一个文件系统的权限问题。 该脚本使用/var/tmp/jinfo及其子文件夹来存储文件。 该目录上的权限是:
drwxr-xr-x 5 root root 4096 Aug 7 15:32 jinfo
由于Apache以用户www-data身份运行,因此预期会出现错误消息。 但是,权限应该是什么? 我相信有很多方法可以通过放宽权限来使错误信息消失,但是我想遵循最佳实践。 我应该将所有者(chown)更改为www-data,还是chmod权限?
注意:我需要更改传播到子目录。
您需要修改您的权限,然后更改组才能生效。 正如Explosion Pill的答案中所提到的那样,您应该将该组更改为Apache的www-data 。 您可以在/var/www目录下递归执行此操作:
chown -R owner:www-data /var/www
owner是当前拥有文件的用户。
在这里,您可以分别看到所有者,组和其他人的文件的读/写/执行权限:
drwxr-XR-X
忽略d ,其他字母的意思是:
这个网站给你的chmod数字的含义:
http://www.goldenplanet.com/support/kb/articles/changing-of-file-rights-chmod-on-the-webserver.html
0:没有权利 1:执行 2:写 3:写/执行 4:阅读 5:读取/执行 6:读/写 7:读/写/执行
您可以在给出权限错误的目录上执行chmod 775 ,这将给予文件和组的所有者完全权限,而只给“其他人”,读取和执行访问。
我认为最好的解决方案是将该文件夹分组到www-data组,并添加组写入权限(或者创建一个新的组,例如www-data)。
我认为更好的选择是chown或chgroup然后chmod为了提供权限给用户/组写入文件。
chgrp -R www-data /var/tmp/jinfo OR
chown -R root:www-data / var / tmp / jinfo
他们两个会产生相同的输出。然后通过给组写入权限来改变权限。
chmod 775 or chmod 665 or chmod g+w /var/tm/jinfo -R
给组写访问权限。