exec()在PHP中没有按预期工作

时间:2009-07-30 12:41:02

标签: php exec

我有一个PHP脚本,我需要执行一个shell脚本'add_article.sh',它读取参数文件并将新闻文章内容添加到搜索索引(Lemur / Indri)。

单独执行'add_article.sh'脚本(来自shell)可以很好地工作,但是从php脚本中运行它我得到了这个:

$blah = exec("./add_article.sh", $out, $ret_val);

echo $out . "<BR />";
echo $ret_val . "<BR />";

这会产生

阵列
255

它位于正确的目录中,即使使用绝对路径也会失败。我在同一个目录中的另一个函数中使用完全相同的格式,在同一目录中执行另一个脚本,一切都很好。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您是否检查过shell脚本的执行权限?在大多数操作系统中,Apache作为用户运行的权限非常少,因此可能是原因。

答案 1 :(得分:1)

$out应该是一个数组。您应该print_r()var_dump()来查看脚本中的内容;它可能会告诉你出了什么问题。

通常,当PHP运行脚本时,可能存在一些不满足的环境依赖性。如果它是从Apache内部运行的话,这种情况尤为常见。

答案 2 :(得分:1)

尝试:

$blah = exec("./add_article.sh", $out, $ret_val);

print_r($out);
echo '<br />';
echo $ret_val . "<br />";