我想从部署在Red服务器上的php应用程序中执行shell脚本,我将这一行添加到我的应用程序中
exec("/app/sh/script.sh user server.info.com cmd.com 0 1 1" ,
$ret_string,
$ret_code);$ret_code是2我试着在服务器上运行/app/sh/script.sh user server.info.com cmd.com 0 1 1,它工作正常,没有问题。
脚本/app/sh/script.sh的内容是
ssh -x user@server.info.com . /app/sh/pro.sh user PRO; $EXE/cmd.com 0 1 1;我试着运行另一个脚本,该脚本只从我的应用程序返回一个字符串,它可以工作,所以我认为ssh连接上的问题。
为什么脚本script.sh在我直接从服务器调用它时工作,而当我从php应用程序调用它时却不能工作?
发布于 2022-08-22 14:34:22
问题在于当您通过PHP执行命令时,用户是Apache用户(通常是www数据),而这个用户不能执行ssh命令。
Apache的用户看不到您的私钥,这是个好主意!
相反,您必须使用SSH类,例如,Spatie包:
use Spatie\Ssh\Ssh;
$process = Ssh::create('user', 'example.com')->execute('your favorite command');https://stackoverflow.com/questions/73427583
复制相似问题