我的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()不起作用?
答案 0 :(得分:0)
更可能是路径问题,尝试使用绝对路径
$ command ='/ path / to / ls'; //我认为它是/ bin / ls
如果找不到命令,通常会得到空的结果(你必须以不同的方式捕获错误输出)
答案 1 :(得分:0)
这可能是路径问题,或者应用无法访问您尝试访问的命令。
将2>&1
添加到exec命令的末尾,看看输出是什么。这很可能会让你看到阻止命令执行的内容。 2>&1
告诉操作系统将STDERR发送到STDOUT。
例如,而不是
exec('ls');
尝试
exec('ls 2>&1');