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

时间:2012-08-08 03:06:31

标签: php linux apache permissions apache2

我(PHP新手)我在我的Linux / Apache服务器上建立了一个遗留的PHP网站。

当我在浏览器中测试网站时出现此错误:

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权限?

注意:我也需要将更改传播到子目录。

3 个答案:

答案 0 :(得分:1)

我认为最好的解决方案是将该文件夹中的chgroup添加到www-data组并添加组写权限(或者创建一个包含www-data的新组)。

答案 1 :(得分:1)

您需要在更改群组之前修复您的权限才有效。正如Explosion Pill的回答中所提到的,你应该将组改为Apache的www-data。您可以在/var/www目录上递归执行此操作:

chown -R owner:www-data /var/www

其中owner是当前拥有文件的用户。

在这里,您可以分别看到所有者,组和其他人对文件的读/写/执行权限:

  

drwxr-XR-X

忽略d,其他字母表示:

  • 所有者 - 读写执行
  • group - read ------ execute
  • 其他人 - 阅读------执行

此网站为您提供chmod数字的含义:

http://www.goldenplanet.com/support/kb/articles/changing-of-file-rights-chmod-on-the-webserver.html

0: No rights 
1: Execute
2: Write
3: Write/Execute
4: Read
5: Read/Execute
6: Read/Write
7: Read/Write/Execute

您可以在提供权限错误的目录上执行chmod 775 ,这将为文件所有者和组提供完全权限,同时只提供“其他人”,并且执行访问。

答案 2 :(得分:0)

我认为更好的选择是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

给予该组的写入权限。