我最近遇到了同样的麻烦,并且偶然发现了这个问题。不幸的是,OP在评论中说,他发现他自己的解决方案,并接受了一个答案,没有帮助我们任何人......然后经过搜索和成功,使file_put_contents再次工作,我决定分享我的解决方案。
我的文件和目录的权限可以接受任何写入(请确保您的目录是chmod 757
这会给根和其他授予在该位置写入文件)。如果它仍然无法正常工作,那是因为您的系统可能是SELinux(安全增强型Linux)系统。
如果你想确保写入setenforce 0
这会变成对SELinux的许可模式,再次运行脚本,如果它的工作原理,则意味着这个问题有很好的描述。
在这种情况下,请将selinux放回setenforce 1
并尝试ls -Zl
放在项目目录所在的目录中。这会给你喜欢
drwx---r-x. 9 root root system_u:object_r:httpd_sys_content_t:s0 4096 Dec 8 00:25 project
或不同的东西,但httpd_sys_content_t
一条线,如果你使用chcon
上下文从一个目录转移到这一个。但如果你没有httpd_sys_content_t
这没关系,因为我们需要改变那个目录的上下文。
首先你需要接受任何public_content_rw_t
上下文写入文件。键入
setsebool -P httpd_anon_write on
这将设置(P)ermanently中的SELinux httpd_anon_write
为true,被戏称为public_content_rw_t
必须写在自己的位置中的任何文件的权利的情况下。
现在你不得不说的SELinux您的项目目录是public_content_rw_t
或者你仍然不能写入文件。类型:
semanage fcontext --add --type public_content_rw_t "/project(/.*)?"
和restorecon -RvF /project
告诉SELinux的适用上述规定。
现在你的目录是public_content_rw_t你应该可以写文件。
Apache的用户应该有权目录 - 只是尝试执行脚本的命令行apache用户,看看是否能工作 – user1914292 2013-02-15 18:12:25
检查Apache的错误日志,它可能给你一些细节的地方失败了。 – 2013-02-15 18:12:27
什么是$ myString值?那是对的吗 ? – Cooper 2013-02-15 18:12:59