我有一个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脚本使其正常工作?任何提示?
答案 0 :(得分:1)
escapeshellarg()
应该用在每个参数上,而不是整个命令。
exec(escapeshellarg('/bin/bash') . ' ' . escapeshellarg("/home/monu/myBash.sh") . ' ' . escapeshellarg(...));