首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP shell脚本返回状态2

PHP shell脚本返回状态2
EN

Stack Overflow用户
提问于 2022-08-20 14:41:56
回答 1查看 54关注 0票数 -1

我想从部署在Red服务器上的php应用程序中执行shell脚本,我将这一行添加到我的应用程序中

代码语言:javascript
复制
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的内容是

代码语言:javascript
复制
ssh -x user@server.info.com . /app/sh/pro.sh user PRO; $EXE/cmd.com 0 1 1;

我试着运行另一个脚本,该脚本只从我的应用程序返回一个字符串,它可以工作,所以我认为ssh连接上的问题。

为什么脚本script.sh在我直接从服务器调用它时工作,而当我从php应用程序调用它时却不能工作?

EN

回答 1

Stack Overflow用户

发布于 2022-08-22 14:34:22

问题在于当您通过PHP执行命令时,用户是Apache用户(通常是www数据),而这个用户不能执行ssh命令。

Apache的用户看不到您的私钥,这是个好主意!

相反,您必须使用SSH类,例如,Spatie包:

代码语言:javascript
复制
use Spatie\Ssh\Ssh;
    
$process = Ssh::create('user', 'example.com')->execute('your favorite command');

看看这里:https://github.com/spatie/ssh

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73427583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档