我有一个非常简单的脚本,用于测试运行 shell_exec (或反引号运算符)是否基本有效:
#!/usr/bin/php5
<?php
echo "This is a PHP script\n";
echo `ls -l /home/stoysnet/`;
除非我以 root 身份运行它,否则它总是给我:
$ ./foo.php
This is a PHP script
Warning: _shell_exec(): Permission Denied in /home/stoysnet/foo.php on line 5
我尝试通过 PHP 以几种不同的方式运行它,但总是遇到相同的错误。但是,当我将脚本放入 root:root
拥有的 /etc/
子目录并以 root
身份执行时,它就可以工作了。
什么给出了?
更新:只是为了澄清:
- 我正在尝试通过命令行以
stoysnet
用户身份运行它。我能够执行通过同一 session 传递给shell_exec
的命令。 - 如果我将脚本移至
/etc/somedir/
并以root
身份执行,它就会按预期工作。 - 脚本本身运行,只是不运行反引号运算符或
shell_exec
部分 - 设置了执行权限,
777
也不起作用。
最佳答案
您是否以与 stoysnet
不同的用户身份运行此脚本? ?当你运行 ls -l /home/stoysnet
时会发生什么与您执行 PHP 脚本的用户是同一用户吗?
似乎您需要以有权 /home/stoysnet/
的用户身份运行脚本.
关于php - 带有 shell_exec 的命令行 PHP 适用于 root,但不适用于其他人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3030595/