2

我(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,还是更改权限?

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

4

3 回答 3

1

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

于 2012-08-08T03:09:41.930 回答
1

您需要先修复您的权限,然后更改组才会生效。如 Explosion Pill 的回答中所述,您应该将组更改www-data为 Apache。您可以在您的/var/www目录上递归地执行此操作:

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

owner当前拥有文件的用户在哪里。

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

drwxr-xr-x

忽略d,其他字母表示:

  • owner - 读写执行
  • 组 - 读取 ------ 执行
  • 其他 - 读取 ------ 执行

该站点为您提供了chmod数字的含义:

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

0:无权限
1:执行
2:写
3:写/执行
4:阅读
5:读取/执行
6:读/写
7:读/写/执行

您可以chmod 775 在给出权限错误的目录上执行此操作,这将授予文件所有者和组完全权限,同时仅授予“其他人”读取和执行权限。

于 2012-08-08T03:22:04.527 回答
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

授予对组的写访问权限。

于 2012-08-08T03:31:34.163 回答