我有一个bash脚本,我通过命令行运行:
./script.sh var1 var2
Run Code Online (Sandbox Code Playgroud)
在我调用某个php文件之后,我正在尝试执行上面的命令.
我现在拥有的是:
$output = shell_exec("./script.sh var1 var2");
echo "<pre>$output</pre>";
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我尝试过使用exec和system太,但剧本从来没有得到执行.
但是当我尝试运行shell_exec("ls");它确实有效并且$output是所有文件的列表.
我不确定这是因为我正在使用的VPS的限制还是问题是否在其他地方?
Rob*_*t K 72
在调用脚本之前,您可能需要chdir到正确的目录.这样,您可以在调用shell命令之前确保脚本所在的目录.
$old_path = getcwd();
chdir('/my/path/');
$output = shell_exec('./script.sh var1 var2');
chdir($old_path);
Run Code Online (Sandbox Code Playgroud)
您的shell_exec由www-data用户从其目录中执行.你可以试试
putenv("PATH=/home/user/bin/:" .$_ENV["PATH"]."");
Run Code Online (Sandbox Code Playgroud)
您的脚本位于/ home/user/bin中的位置 稍后您可以
$output = "<pre>".shell_exec("scriptname v1 v2")."</pre>";
echo $output;
Run Code Online (Sandbox Code Playgroud)
显示命令的输出.(或者,如果没有导出路径,请尝试提供脚本的完整路径,而不仅仅是./script.sh