1

我的 exec() 命令停止工作。我从 Dreamhost Apache 服务器上的 PHP 脚本调用 exec()。

下面是一个测试脚本:

$disabled = explode(', ', ini_get('disable_functions'));
if (in_array('exec', $disabled)) 
    echo 'exec is in array of disabled functions';
else
    echo 'exec is NOT in array of disabled functions';
echo '</br> exec(ls): </br>';
$command = 'ls';
exec($command,$output,$returnvar);
echo '</br> output is: </br>';
var_dump($output);
echo '</br> return var is: </br>';
var_dump($returnvar);

输出是:

exec is NOT in array of disabled functions
exec(ls):

output is:

array
  empty


return var is:

int 1

恕我直言,这告诉我 exec() 在我的系统上已启用。$return_var 设置为 1,Google 向我保证这表示“小问题”。

这里可能是什么问题?为什么 exec() 不起作用?

4

2 回答 2

0

更有可能是路径问题,请尝试使用绝对路径

$command = '/path/to/ls'; //我认为它的 /bin/ls

如果找不到命令,您通常会得到空结果(您必须以不同的方式捕获错误输出)

于 2012-06-27T18:35:23.523 回答
0

这可能是路径问题或应用程序无法访问您尝试访问的命令。

添加2>&1到 exec 命令的末尾,看看输出是什么。这很可能会让你看到是什么阻止了命令的执行。 2>&1告诉操作系统将 STDERR 发送到 STDOUT。

例如,而不是

exec('ls');

尝试

exec('ls 2>&1');
于 2013-10-09T12:15:08.140 回答