2015-05-04 86 views
1

我的問題不是該文件夾正在被寫入,而是它被寫入的權限。以下是我正在使用寫入文件的代碼:在laravel中使用mkdir製作一個可寫目錄()

// check if the file/folder exists 
$targetPath = 'files/docmoga/'; 
if(!file_exists($targetPath)){ 
    $oldmask = umask(0); 
    mkdir($targetPath, '0777', true); 
    umask($oldmask); 
} 
move_uploaded_file($tempFile, $targetFile); 

由於權限,它在最後一行失敗。以下是該文件夾正在寫入的權限:

dr----x--t 2 apache apache 4096 May 4 09:17 docmoga 

可能發生什麼情況導致該文件夾的權限被錯誤地寫入?如果它有幫助,我使用laravel作爲框架,我知道這應該不是什麼意思。

回答

2

您是否檢查過腳本運行的用戶?

在腳本中運行exec('whoami')並查看輸出。它應該是apache或具有適當權限的用戶來創建文件夾。

也嘗試使用字面八進制數0777與字符串版本'0777'。取自https://stackoverflow.com/a/2251293/1133306

+0

我認爲這將是apache,因爲當文件夾被寫入時,它會寫入apache的一個chown:apache。另外,whoami命令返回apache。 – jamadri

+0

更新了我的答案。 –

+0

就是這樣。這是因爲這些數字是字符串格式與字面值。謝謝! – jamadri