簡體   English   中英

php shell_exec權限問題

[英]Problems with php shell_exec permissions

我正在以www-data身份運行,並嘗試使用shell_exec(/foobar/script/myscript.sh)執行Shell腳本,但是當腳本嘗試寫入日志文件時出現以下錯誤

cannot create /foobar/foo.log: Permission denied 

但是,如果我嘗試直接從終端運行腳本,則不會遇到任何問題。

$ sudo su www-data
$ /foobar/script/myscript.sh
$

知道這里會發生什么嗎?

我還應該補充一點,我將www-data添加到了mybar組中,這就是我列出目錄時顯示的內容

drwxrwxr-x 3 mybar mybar  4096 May 14 14:18 foobar     # ls -l /


-rw-rw-r-- 1 mybar mybar 2824 May 15 09:57 foo.log     # ls -l /foobar

我認為可以有兩種選擇:

  1. Web服務器和php-fpm在不同的用戶下運行(默認情況下不應如此)。 試試echo shell_exec('whoami');
  2. 您已經在啟動php-fpm進程之后將www-data添加到mybar中,因此它仍然“不知道”它是什么(然后我認為重新啟動fpm應該會有所幫助)。

這對我有用:

sudo chown www-data:www-data -R foobar/

您試圖在其中創建文件的目錄必須屬於執行命令的任何人。

您可以輸入:

ls -la 

看看它屬於誰。

您應該會看到以下內容:

drwxr-xr-x  8 jack jack  4096 Jul 22 11:36 application

當我登錄到ubuntu機器時,我以jack@jack身份登錄,因此我可以在以下目錄中創建文件,而無需發出sudo命令:

drwxr-xr-x  8 jack jack  4096 Jul 22 11:36 application

因為它是當前用戶擁有的。

當您嘗試運行通過訪問網頁執行的腳本時。 www-data是執行命令的用戶,因此您試圖創建/修改/刪除的任何目錄或文件都必須由www-data擁有。

暫無
暫無

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

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