2016-01-16 151 views
0

我通過運行命令行的PHP文件與下面的代碼中:Linux - PHP mkdir創建目錄,但沒有寫權限?

if(!is_dir($path)) { 
    mkdir($path, 0666, true); 
} 

不引發錯誤此代碼,並如預期的那樣創建的文件夾。

如果我算賬:

file_put_contents("Some data", $path . "filename.txt"); 

我得到一個「未能打開流:權限被拒絕」異常。

即使我做了

chmod($path, 0777); 

的PHP代碼裏面的mkdir後,我得到的錯誤。

如果我手動創建目錄,並通過Linux命令將其設置爲777,everythig工作正常。爲什麼?

+0

是什麼'$ path'您可以設置權限? –

+0

你已經給了答案,現在就問問他們。 –

回答

0

在創建目錄

mkdir($path, 0777, true)

還需要file_put_contents的語法更改爲

file_put_contents($path . "/filename.txt", "Some Data");

+0

我這樣做!我將權限設置爲0666,這對寫作來說已經足夠了。將一切設置爲777是一種不好的做法,在我的情況下不是必需的。它根本不能解決問題。 – bernhardh

+0

設置777不好主意,但要做到這一點,你需要設置這些權限至少在0744 –

+0

@leftjustified,如果你不給執行權限的目錄,你不能做任何事情(如創建一個文件)。寫只允許你刪除文件,因爲你不需要訪問目錄中的文件,但不創建一個文件,因爲你總是得到一個文件描述符,並且你不能得到它,因爲你沒有有訪問權。 –