簡體   English   中英

對cron和瀏覽器的權限被拒絕的mkdir

[英]Permission denied mkdir for cron and browser

我們有一個PHP XML解析腳本,可將照片上傳到文件夾結構中,如/content/images/2012/05/31/%object_id%/ 該解析器主要作為DirectAdmin cronjob運行。 在通過瀏覽器運行解析器時,在正確獲取文件夾權限以啟用cronjob在該目錄中的上載時遇到很多問題。

根據print_r(posix_getpwuid(fileowner($directory))); 目錄的所有者與get_current_user()相同。 但是,我收到: Warning: mkdir() [function.mkdir]: Permission denied通過瀏覽器運行腳本時, Warning: mkdir() [function.mkdir]: Permission denied 作為cron作業運行時,它工作正常。

所有文件夾都具有chmod 0777,並以此創建新文件夾。

mkdir($path,0777,true);

自然,我們在上傳和/或刪除文件本身上也存在相同的權限問題。

有什么方法可以使所有文件操作既作為cron作業又通過瀏覽器運行?

我們正在Linux上運行PHP版本5.2.17。

需要注意幾個想法:get_current_user獲取.php文件(即腳本)的所有者,而不是運行php腳本的用戶的名稱。 這些總是一樣的,因為文件(由您(普通用戶)上載)和php / apache將以其他用戶(通常稱為“ apache”或“ www”)運行。您需要這兩個中的后一個。 從php手冊中獲取的建議代碼段是:

$processUser = posix_getpwuid(posix_geteuid());
print $processUser['name'];

(http://php.net/manual/zh/function.get-current-user.php-查看評論)


不過,要解決您當前的問題,我強烈建議您以與運行php / apache的用戶相同的身份運行cron(請檢查crontab上的手冊頁)-該用戶應為上述代碼段中的那個,請查看文件和目錄到同一用戶(當前將是root用戶)以及您和FTP客戶端之間共享的組。 然后確保用戶和組具有讀寫權限,以便您也可以從ftp編輯。 確保在腳本創建目錄時同時更改了目錄(775)和文件(644)的權限。

還要注意,如果您使用mkdir(),則上面的目錄還必須具有該用戶的寫權限(這實際上可能是您的最初問題,以及為什么只有root / cron可以在其中寫)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM