使用参数从PHP执行bash脚本

时间:2013-06-16 20:59:47

标签: php bash cron

我有一个PHP脚本,将在Ubuntu服务器上以cron身份运行。

我正在尝试从PHP脚本执行bash脚本,如下所示:

    exec(escapeshellarg('/bin/bash ') . escapeshellarg("/home/monu/myBash.sh") . escapeshellarg("var1") . escapeshellarg("var2") .escapeshellarg("var3"));

当我在终端中以“用户”(monu)运行“ php myPHP.php ”时,我会收到如下错误:

    sh: 1: /bin/bash /home/monu/myBash.sh var1 var2 var3: not found

myBash.sh 的内容如下:

    export CLASSPATH=./:./lib/xp.jar:./lib/ojdbc14.jar:./lib/log4j-1.2.8.jar:./lib/log4j.properties:./lib/log4j.xml

    cd someDir
    ./install.sh $A $B $C $D
    cd ..

当我从命令行手动执行BASH脚本时,它按预期工作。

我甚至尝试过 system() shell_exec() ,但仍然没有运气。

如何从PHP脚本调用此BASH脚本使其正常工作?任何提示?

1 个答案:

答案 0 :(得分:1)

escapeshellarg()应该用在每个参数上,而不是整个命令。

exec(escapeshellarg('/bin/bash') . ' ' . escapeshellarg("/home/monu/myBash.sh") . ' ' . escapeshellarg(...));