我正在以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
答案 0 :(得分:1)
我认为可以有两种选择:
答案 1 :(得分:1)
这对我有用:
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
所有。