我無法打開一個文件進行寫入,除非我爲它所創建的目錄啓用「執行」權限,這似乎很奇怪。爲什麼「寫入」權限不夠?爲什麼PHP需要「執行」權限才能寫入文件?
這是一個非常簡單的fopen,fputcsv循環,fclose序列。該目錄中的文件沒有其他任何內容正在完成。
基本配置 - Centos的,阿帕奇,PHP
感謝
我無法打開一個文件進行寫入,除非我爲它所創建的目錄啓用「執行」權限,這似乎很奇怪。爲什麼「寫入」權限不夠?爲什麼PHP需要「執行」權限才能寫入文件?
這是一個非常簡單的fopen,fputcsv循環,fclose序列。該目錄中的文件沒有其他任何內容正在完成。
基本配置 - Centos的,阿帕奇,PHP
感謝
這可能與SELinux做。基本上,SELinux可以讓您更好地控制進程和守護進程可以執行的操作......一種超出普通用戶/組權限的邊界系統。它對細粒度控制可能有幫助,但有時候會妨礙它。
有辦法關閉它(請參閱http://linuxconfig.org/how-to-disable-selinux)。
但是,還有一些方法可以微調設置(請參閱:http://sheltren.com/stop-disabling-selinux),從長遠來看這可能會更好。如果你不與CentOS綁定,你也可以嘗試一個不同的發行版。
編輯:
此外,如果這沒有做SELinux的,如在下面的評論中提到sepp2k,你可能想看看標題爲「執行權限」在Wayne Pollock的this file and directory reference guide上。
這與SELinux無關。您不能在沒有執行權限的目錄中創建,修改或讀取文件。這是正常的行爲。 – sepp2k 2012-02-04 20:15:04
這類問題最近在這裏被問到......(http://stackoverflow.com/questions/8998743/rhel-php-writing-files-outside-var-www-html/8998776)和( http://stackoverflow.com/questions/9056628/php-cant-write-outside-of-the-document-root-no-matter-what/9059696)也許我錯了。不要傷害自己發佈自己的答案。 – summea 2012-02-04 20:44:55
但是,您確實提出了有關'執行'權限的好處:http://content.hccfl.edu/pollock/AUnix1/FilePermissions.htm(執行權限部分)編輯我的答案以反映這種可能性。 – summea 2012-02-04 21:17:52
「在目錄上,執行權限(也稱爲」搜索位「)允許您訪問目錄中的文件並使用cd命令輸入它,例如。」 source - 關於文件權限的良好討論
這可能與SELinux(http://en.wikipedia.org/wiki/Security-Enhanced_Linux)有關,因爲您使用的是CentOS。 – summea 2012-02-04 18:23:47