为了账号安全,请及时绑定邮箱和手机立即绑定

从PHP运行Bash命令

/ 猿问

从PHP运行Bash命令

Qyouu 2019-11-15 10:48:26

我有一个bash脚本,可以通过命令行像这样运行:


./script.sh var1 var2

我在调用某个php文件后尝试执行上述命令。


我现在所拥有的是:


$output = shell_exec("./script.sh var1 var2");

echo "<pre>$output</pre>";

但这是行不通的。我尝试过使用exec和system太,但剧本从来没有得到执行。


但是,当我尝试运行shell_exec("ls");它时,它确实起作用,并且$output是所有文件的列表。


我不确定这是由于我使用的VPS的限制还是问题出在其他地方?


查看完整描述

3 回答

?
慕标5265247

您可能需要在调用脚本之前将chdir更改到正确的目录。这样,您可以在调用shell命令之前确保脚本位于哪个目录中。


$old_path = getcwd();

chdir('/my/path/');

$output = shell_exec('./script.sh var1 var2');

chdir($old_path);


查看完整回答
反对 回复 2019-11-15
?
繁花不似锦

您的shell_exec由www-data用户从其目录中执行。你可以试试


putenv("PATH=/home/user/bin/:" .$_ENV["PATH"]."");

脚本位于/ home / user / bin中的位置, 以后可以


$output = "<pre>".shell_exec("scriptname v1 v2")."</pre>";

echo $output;

显示命令的输出。(或者,不导出路径,请尝试提供脚本的整个路径,而不仅仅是./script.sh


查看完整回答
反对 回复 2019-11-15
?
慕丝7291255

检查是否在域php.ini或.htaccess中未设置open_basedir。这将使您进入您域的目录,而php将仅具有在该目录内执行的权限。


查看完整回答
反对 回复 2019-11-15

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信