1

可能重复:
在这里发疯,无法弄清楚为什么 rename()、copy() 函数不起作用。

我收到此错误:

警告:复制(/fullpathtofile/a4d3af69.jpeg)[function.copy]:无法打开流:第 31 行 /var/www/vhosts/site.com/httpdocs/application/controllers/WorkController.php 中的权限被拒绝

权限设置为 775。它只适用于 777,但我认为这不是我专用服务器上的社交网站的正确方法,这是一个安全问题,对吗?那是我唯一的解决办法吗?我预计 copy() 应该可以工作。

4

5 回答 5

4

Web 服务器用户没有足够的权限写入您要复制到的目录。

解决您的问题的演练

  1. chmod“目标”目录到777.
  2. 让您的脚本将文件写入该目录。
  3. 检查写入的文件(ls会做)并查看哪个用户拥有它
  4. 那是运行 Web 服务器进程的用户。
  5. 确保您的目标目录由该用户拥有(在这种情况下chmod 755会这样做)或该用户的组(在这种情况下chmod 775会这样做)。
于 2011-04-04T13:51:03.260 回答
1

什么权限设置为775?如果它是目标,你需要写权限,否则你不能写到那个位置?

于 2011-04-04T13:51:15.413 回答
1

您需要将 /fullpathtofile 的所有权设置为运行网络服务器的用户,其中的文件也是如此。从 PHP 保存的所有文件都将归该用户所有。我假设您正在将上传的文件保存到该目录:否则这适用于源和目标。

于 2011-04-04T13:51:17.183 回答
1

chown运行 PHP 脚本的用户所拥有的相关目录(参见get_current_user())。

编辑:这是错误的,请参阅评论。您实际要使用的用户chown是运行 Web 服务的用户。这通常是nobody, apache,www-data等,通常可以用 来确定ps aux | grep httpd

于 2011-04-04T13:53:18.270 回答
1

如果您是专心致志的,那么777没有任何问题。

您必须检查所涉及的每个嵌套目录的权限和所有者。

ls -la商场。

于 2011-04-04T13:59:45.480 回答