我有一个PHP脚本,它将作为cron在Ubuntu服务器上运行。
我正在尝试从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脚本来使它工作,任何提示?
发布于 2013-06-16 13:01:48
每个参数都应该使用escapeshellarg()
,而不是整个命令。
exec(escapeshellarg('/bin/bash') . ' ' . escapeshellarg("/home/monu/myBash.sh") . ' ' . escapeshellarg(...));
https://stackoverflow.com/questions/17137667
复制相似问题