php create_directory权限被拒绝:尝试shell_exec脚本时

时间:2013-07-10 15:08:32

标签: php apache shell ubuntu permissions

当我尝试shell_exec('/home/user/scripts/./script')时,我收到以下错误:

terminate called after throwing an instance of 'boost::filesystem3::filesystem_error'
  what():  boost::filesystem::create_directory: Permission denied: "/.script"
Aborted (core dumped)

shell_exec('whoami')在我面向网络的php脚本上返回www-data

目录和文件的权限完全相同:

-rwxrwxr-x 1 user123   group456     8246 Jun 25 06:10 script
drwxrwxr-x 7 user123   group456     4096 Jul 10 14:54 . 

实际上我可以shell_exec('touch /home/user/scripts/test')并且它会创建没有问题的文件。

$ ls -l /home/user/scripts/test
-rw-r--r-- 1 www-data www-data          0 Jul 10 14:54 test123

这是为每个用户设置我的群组的方式:

$ groups user123
user123 : group456
$ groups www-data
www-data : group456

为什么我收到此错误?

2 个答案:

答案 0 :(得分:1)

您正在运行的脚本有拼写错误:它正在尝试在 root 文件夹而不是/.script(相对路径)中创建文件夹./script

答案 1 :(得分:0)

您是否尝试在/home/user/scripts/./script执行脚本,那么您应该以{{1​​}}

运行

当你在路径上添加shell_exec('sh /home/user/scripts/script')时,它的解释会有所不同。

传递./时 - 您指的是当前目录中的文件名./script

此外,您实际上是从您的c程序收到错误,它告诉我们您的系统正在停止apache以获得root权限。您可以script让apache获得所需的权限。