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

我认为可以有两种选择:

  • web服务器和php fpm在不同的用户下运行(默认情况下不应如此)。试试echo shell_exec(“whoami”)
  • 在php fpm进程启动之后,您已经将www数据添加到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

    您能在
    sudo su www-data
    之后检查
    whoami
    吗?通常它没有登录shell,您可以直接返回到
    root
    。。。这可以解释问题,因为除非
    www-data
    mybar
    组中,否则它无法在那里写入。