php shell_exec权限存在问题
我以php shell_exec权限存在问题,php,linux,apache2,Php,Linux,Apache2,我以www-data的身份运行,并尝试使用shell\u exec(/foobar/script/myscript.sh)执行shell脚本,但当脚本尝试写入日志文件时,我遇到以下错误 cannot create /foobar/foo.log: Permission denied 但是,如果我尝试直接从终端运行脚本,我不会遇到任何问题。即 $ sudo su www-data $ /foobar/script/myscript.sh $ 知道这里会发生什么吗 我还应该补充一点,我在myb
www-data
的身份运行,并尝试使用shell\u exec(/foobar/script/myscript.sh)
执行shell脚本,但当脚本尝试写入日志文件时,我遇到以下错误
cannot create /foobar/foo.log: Permission denied
但是,如果我尝试直接从终端运行脚本,我不会遇到任何问题。即
$ sudo su www-data
$ /foobar/script/myscript.sh
$
知道这里会发生什么吗
我还应该补充一点,我在mybar组中添加了www数据,这就是我列出目录时显示的内容
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
我认为可以有两种选择:
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
您能在sudo su www-data
之后检查whoami
吗?通常它没有登录shell,您可以直接返回到root
。。。这可以解释问题,因为除非www-data
在mybar
组中,否则它无法在那里写入。