我最近遇到了同樣的麻煩,並且偶然發現了這個問題。不幸的是,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