实时服务器上的PHP文件权限问题

时间:2016-05-10 06:58:47

标签: php permissions file-permissions

最近,由于权限问题,我移动了一个网站,并且所有与文件相关的操作都停止了工作,例如copyimagecreatefromjpeg等。

所有文件都在files /目录中创建。我以递归方式为目录授予755权限,对所有文件授予644权限。 PHP功能仍然无法正常工作。它仅在我授予777权限(甚至不是775个作品)时才有效。

我检查了其他实时项目的权限。他们有755个目录和644个文件,但它们似乎没有任何许可问题也能正常工作。

有人可以在这个特定的网站上解释一下这个问题的原因吗?

由于

1 个答案:

答案 0 :(得分:1)

这听起来像是一种所有权问题。

要测试,请在服务器上创建一个777 perms的文件夹(例如tmp,可能在您的文档根目录中)。

然后创建一个脚本(与tmp一起),对该文件夹进行简单的写入。

<?php

file_put_contents(__DIR__ . '/tmp/test.txt', 'hello earth');

然后查看结果文件的所有权和权限。

在我的开发服务器上,我在Linux(Debian)上使用Web服务器Apache(使用mod php)运行Php。并且脚本以用户&#39;数据&#39;运行。所以关键是用户www-data需要能够写入该文件夹。

如果Web服务器无法写入该文件夹,则apache错误日志中会出现以下错误:

[Tue May 10 08:27:52.404959 2016] [:error] [pid 18] [client 172.17.42.1:59832] PHP Warning:  file_put_contents(/var/www/stackoverflow/tmp/test.txt): failed to open stream: Permission denied in /var/www/stackoverflow/so_test.php on line 3, referer: http://localhost/

尝试并了解您的服务器环境和unix权限。