2012-12-17 72 views
10

我以前工作的PHP腳本,它能夠創建一個目錄,mkdir目錄:PHP無法用mkdir

$webfolder = "/var/www/html/images/user"; 
mkdir($webfolder, 0770); 

我做了一些修改該文件夾/var/www/html/images的權限設置也就是現在:

drwxrwx---. myself apache system_u:object_r:httpd_sys_content_t:s0 images 

我覺得以前這個文件夾是由apache擁有。但由於apache作爲用戶組具有完整的讀,寫和執行權限,我不知道爲什麼它不能在其中創建文件夾。使用mkdir產生一個false布爾值。

是由於目錄所有權的問題還是有其他一些原因?請注意,我正在使用PHP版本5.4。

錯誤日誌添加:

[週一12月17日11時12分34秒2012] [錯誤] [客戶端127.0.0.1] PHP警告: MKDIR():權限在/ var拒絕/第33行www/html等/上傳, 引用者:https://mywebsite.com/referer

+1

文件夾'/ var/www/html/images/user'存在嗎?如果是,具有哪些權限?你可以 - 爲了測試purporses - 將父文件夾的所有者更改爲'apache'並嘗試它是否有效? – hakre

+0

@hakre,是SELinux給我的問題。看到我的答案。感謝您的耐心和時間:) –

回答

26

答案是盯着就在我的面前,我卻錯過了,由於我不熟悉的SELinux。

SELinux上下文類型應該設置爲httpd_sys_content_rw_t而不是httpd_sys_content_t,這樣該文件夾對於apache來說都是可讀寫的。使用以下命令遞歸地更改上下文:

# chcon -R -t httpd_sys_content_rw_t /var/www/html/images 

好悲傷。希望它有助於其他遇到此問題的人。

+0

嗨,我在這裏有同樣的問題..我試圖在CodeIgnter中創建和在Ubuntu 14.14 Lts中開發..你能不能請我解釋一下,儘管我需要的步驟爲了解決這個錯誤?爲了給你一些額外的信息:絕對路徑是'/ opt/lampp/htdocs/www/my-app/public/uploads' ..基本上我想要做的是每個登錄用戶上傳文件文件夾,並創建相冊文件夾(這將用PHP完成)來存儲照片.. – Lykos

+0

您可以查看我創建的主題了解更多信息http://stackoverflow.com/questions/32861261/codeigniter-message-mkdir- permission-denied-on-ubuntu,http://forum.codeigniter.com/thread-63136.html,http://askubuntu.com/questions/679844/mkdir-permission-denied-to-create-folders-with- php – Lykos

+0

你說這個命令可以解決我的問題嗎? – Lykos

0

在CentOS7虛擬機上,使用PHP5.4.16/Apache 2.4.6/mariadb 5.5.44,smarty模板目錄無法生成編譯模板文件,並且提供了以下錯誤(在/ var/log/httpd/error_log):

[Thu Mar 31 12:36:08.201383 2016] [:error] [pid 13094] [client 192.168.212.65:52204] PHP Fatal error: Smarty error: unable to write to $compile_dir '/var/www/html/app1/templates_c'. Be sure $compile_dir is writable by the web server user. in /var/www/html/app1/libs/smarty/Smarty.class.php on line 1093 

因此PHP應用程序顯示空白屏幕。

chmod 777 templates_c也沒有工作;但根據@Question Overflow的建議,該虛擬機上的Web根目錄的權限確實解決了問題。

我不得不執行:

[[email protected] html]# chcon -R -t httpd_sys_content_rw_t /var/www/html 
當然

中,templates_c &緩存應該由Apache用戶所擁有:

drwxr-xr-x. 2 apache apache  6 Mar 31 12:56 templates_c 
drwxr-xr-x. 2 apache apache  6 Mar 31 12:56 cache 

半天時間花更多之後,從此就來了。 謝謝