我的ubuntu服务器上的php shell_exec没有运行命令!为什么会这样?

时间:2012-08-05 12:01:28

标签: php linux bash shell-exec

这让我发疯了。经过大量的测试,我成功地在终端中运行了以下.sh文件,并且它完全符合我的预期。

adt -package -target apk -storetype pkcs12 -keystore $AND_CERT_FILE -storepass $AND_CERT_PASS "$OUTPUT" "$APP_XML" -C bin . -C icons/android . -extdir lib .

echo "DONE";

我想从PHP而不是终端运行它,所以我在PHP中编写了以下内容来调用.sh文件但是尽管PHP返回了" DONE"消息,该命令不起作用。如果我输错了命令,则不会显示错误。这是我在PHP中写的内容:

$output = shell_exec("./test.sh");
echo $output;

有没有人有任何想法?

1 个答案:

答案 0 :(得分:0)

您不能将选项与非选项参数混合使用。

正确的格式是:

command [-options ...] [--] [non-option arguments]

任何不以-开头的单词都将结束选项处理,裸--(可选)也是如此。之后的所有参数都不会作为选项处理。

参数"$OUTPUT""$APP_XML"属于该行的末尾,或者缺少adt的正确选项前缀(我将其留作练习)。

adt -package -target apk -storetype pkcs12 \
    -keystore $AND_CERT_FILE \
    -storepass $AND_CERT_PASS \
    -C bin . \
    -C icons/android . \
    -extdir lib . \
    "$OUTPUT" "$APP_XML"

请注意,我提交了原始代码的编辑,其中包含此处的细分。 在编辑之前,我毫无头绪。在添加\ newline对时, 问题变得很明显。

查看此adt packaging troubleshooting博客条目。这似乎证实了我的怀疑。博客明确警告最后指定任何文件名。