【发布时间】:2013-07-08 14:18:54
【问题描述】:
当我尝试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') 在我面向 Web 的 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
为什么会出现这个错误?
【问题讨论】:
-
如果你从命令行运行
/home/user/scripts/./script会发生什么? -
它得到了预期的结果。事实上,我从这个线程中了解到,我也可以使用
/home/user/scripts/script执行命令并且它可以工作。应该注意的是,我正在运行的脚本不是 PHP 脚本,而是一个简短的 C 程序,我在同一台机器上使用面向 Web 的服务器上的 PHP 来调用这个脚本。我使用 PHP 脚本在命令行上以 root 身份调用此 C 脚本没有问题。 -
当您从 php 运行它时,
shell_exec('/home/user/scripts/script')和system('/home/user/scripts/script')的确切错误是什么 -
我在原始帖子中粘贴的完全相同的错误。如果我在
shell_exec函数中使用相同的命令并将其粘贴到命令行中,我会得到预期的结果。 -
我认为您的问题是您的系统正在阻止 apache 获得 root 权限。你有 SELinux 吗?
标签: php apache shell ubuntu permissions