file_put_contents说权限被拒绝了?

时间:2011-05-13 09:37:30

标签: php io

  

可能重复:
  file_put_contents permission denied

我最近转移了服务器,似乎file_put_contents无法在新服务器上运行。

一切都是一样的,文件夹是正确的chmodded,但由于某种原因,它不是创建文件并将内容放入其中。

我已经创建了一个测试供您查看,模拟我们目前的工作方式:

file_put_contents("/home/user/public_html/test/test.progress", "test");

脚本正在

运行
/home/user/public_html/test.php

/test folder is chmodded to 755 (777 makes no difference)

我收到以下错误:

Warning: file_put_contents(/home/user/public_html/test/test.progress) [function.file-put-contents]: failed to open stream: Permission denied in /home/user/public_html/test.php on line 2

我是否需要更改服务器上的任何设置才能使其正常工作?有什么问题?

1 个答案:

答案 0 :(得分:9)

您可能使用了错误的用户。 检查PHP是否使用拥有您尝试编写的目录的同一用户。 PHP经常使用www-data(www-data是Ubuntu上的Web服务器使用的用户,例如Apache和Nginx))因此,如果目录被chmodded为755,则意味着用户创建的目录可以写入,但是其他人只能阅读。 chown到php用户或chmod到777。

我个人运行PHP fastcgi,它运行一个独特的用户,所以我没有这个问题,考虑切换到fastcgi。