我(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权限?
注意:我也需要将更改传播到子目录。
答案 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
,其他字母表示:
此网站为您提供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
给予该组的写入权限。