【发布时间】:2013-06-17 05:18:23
【问题描述】:
我有一个 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 脚本以使其工作,有什么提示吗?
【问题讨论】:
-
那是因为您的 apache/php 用户没有权限访问您的主文件夹。
-
@Jon,我在以用户 (monu) 身份登录时在终端中运行 PHP 脚本以进行调试。所以我猜文件权限不会引起问题。