2010-02-07 71 views
6

在過去的2個小時裏,我已經拉出了我的頭髮,並確信我正在做一些非常愚蠢的事情。mkdir不能在PHP中工作

<?php 
mkdir("blah", 0777); 
?> 

這是通過命令行工作並創建文件夾。但是當我嘗試通過瀏覽器運行它時,同樣的事情就不起作用。任何文件權限問題?

+0

我被這個困住了很長時間,其他人。如果你在SELinux上,還有一個額外的權限層叫做「安全上下文」,你可以用'ls -alZ'來看。使用類似'chcon system_u:object_r:httpd_sys_content_t:s0 public_HTML' – changokun 2013-03-12 13:04:01

回答

11

難道可能是在命令行下運行時,該腳本會繼承您的權限,但它不會在瀏覽器中運行的時候?

在這種情況下,你會想讓你的目錄權限'寫'組。

+4

哈哈! 10,000聲望!好哇! – 2010-02-07 04:01:10

3

您的Web服務器(Apache的?)正在運行,因爲它是自己的用戶,並且不具有寫權限您正在運行的mkdir目錄。

給寫信給你的Web服務器的用戶權限通過A)使其成爲所有者,B)如果該組具有寫入權限,則將其添加到該組,或者C)給予每個人寫入權限(對於大多數設置不推薦)。

+0

有同樣的問題,解決了!我首先創建了一個帶有FTP的文件夾,當使用mkdir創建文件夾時,它不起作用。刪除文件夾並確保腳本創建它解決它。 – Pedro 2014-11-21 16:12:14

0

你可以用umask嘗試,當PHP被用作服務器模塊,當每個請求完成umask的恢復。

$old = umask(0); 
mkdir($path,0777); 
umask($old);