命令行PHP与shell_exec适用于root但不适用于其他人

时间:2010-06-13 00:23:55

标签: php linux permissions command-line-interface

我有一个非常简单的脚本,用于测试运行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运行它,但我总是得到同样的错误。但是,当我将脚本放入/etc/所拥有的root:root子目录并以root执行时,它可以正常工作。

是什么给出了?

更新:只是为了澄清:

  • 我试图通过命令行将其作为stoysnet用户运行。我能够通过同一个会话执行传递给shell_exec的命令。
  • 如果我将脚本移至/etc/somedir/并执行root,则按预期工作。
  • 脚本本身运行,而不是反引号运算符或shell_exec部分
  • 已设置执行权限,777也不起作用。

1 个答案:

答案 0 :(得分:0)

您是否以与stoysnet不同的用户身份运行此脚本?当您以与执行PHP脚本相同的用户运行ls -l /home/stoysnet时会发生什么?

似乎您需要以拥有/home/stoysnet/权限的用户身份运行脚本。