我最近转移了服务器,似乎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
我是否需要更改服务器上的任何设置才能使其正常工作?有什么问题?
答案 0 :(得分:9)
您可能使用了错误的用户。 检查PHP是否使用拥有您尝试编写的目录的同一用户。 PHP经常使用www-data(www-data是Ubuntu上的Web服务器使用的用户,例如Apache和Nginx))因此,如果目录被chmodded为755,则意味着用户创建的目录可以写入,但是其他人只能阅读。 chown到php用户或chmod到777。
我个人运行PHP fastcgi,它运行一个独特的用户,所以我没有这个问题,考虑切换到fastcgi。