如果我的PHP脚本写在那里,那么/ var / tmp / mysite应该是什么权限?

我(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 

给组写访问权限。