exec 和 system 返回结果不正确

2018-08-27 18:27:52 +08:00
 kevinle
?php

$ab12=exec("/opt/bin/busybox ps|grep vsftpd",$output,$res);
print "账号 1:".$output;
print "账号 2:".($res);
print "账号 3:".($ab12);


?

账号 1:Array
账号 2:127
账号 3:

在 putty 上执行 /opt/bin/busybox ps|grep vsftpd 的结果是 4

环境是 android 4.4.2 linux 内核 3.1.4,php7,nginx/1.12.2

如何返回正确结果呢。
2132 次点击
所在节点    PHP
7 条回复
MeteorCat
2018-08-27 18:40:30 +08:00
查下 errno 错误码说明
dobelee
2018-08-27 18:43:48 +08:00
exec 捕获不到标准错误。
NjcyNzMzNDQ3
2018-08-28 09:50:10 +08:00
1.账号建议写在环境变量里
2.检查 php-fpm 的启动用户是否有权限
NjcyNzMzNDQ3
2018-08-28 09:51:53 +08:00
exec system grep 文件在并发下耗时严重
kevinle
2018-08-28 10:01:56 +08:00
1.账号建议写在环境变量里
2.检查 php-fpm 的启动用户是否有权限 以 root 权限 启动的。
环境变量,确实没有考虑到,马上检查一下。
exec system grep 文件在并发下耗时严重,有什么解决的方法吗,写成 sh 执行?
kevinle
2018-08-28 10:08:01 +08:00
应该不是环境变量的问题,
exec("/opt/bin/portal",$res);
for($i=0;$i<count($res);$i++){
if (preg_match('/THE ACTIVE CODE IS: ([a-zA-Z0-9_.-]+)/',$res[$i],$matches)){
$code=trim($matches[1]);
break;
}elseif (preg_match('/THIS DEVICE HAS BOUND TO USER: ([a-zA-Z0-9_.-]+)\./',$res[$i],$matches)){
$code="已绑定:".trim($matches[1]);
}

这个就可以正确的显示。
kevinle
2018-08-28 12:28:49 +08:00
确实环境问题,感谢 @NjcyNzMzNDQ3

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/483733

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX