php调用命令行执行命令结果显示在网页,php system命令在网页和命令行上执行结果不一致...

php system命令在网页和命令行下执行结果不一致

大家好,现在我有一个文件a.php.内容是:

PHP code$str = " /opt/rpm/bin/rpm -bb --target i686--linux /tmp/test.spec";

system($str);

?>

当我用http://192.168.1.1/a.php 执行的时候结果显示:

HTML codeBuilding target platforms: i686--linux Building for target i686--linux Processing files: VTCUAL06.06C.P010-R1.0-P1

当我在命令行下用/usr/local/php a.php 执行的时候,结果显示:

HTML codeBuilding target platforms: i686--linux

Building for target i686--linux

Processing files: VTCUAL06.06C.P010-R1.0-P1

Finding Provides: (using /opt/rpm/lib/rpm/find-provides)...

Finding Requires: (using /opt/rpm/lib/rpm/find-requires)...

Wrote: /export/home/webadm/.rpm/RPMS/i686/VTCUA

也就是说在http访问模式下有三行没有显示出来:

HTML codeFinding Provides: (using /opt/rpm/lib/rpm/find-provides)...

Finding Requires: (using /opt/rpm/lib/rpm/find-requires)...

Wrote: /export/home/webadm/.rpm/RPMS/i686/VTCUA

有人知道是什么原因吗?谢谢了!!

------解决方案--------------------

这个问题好奇怪~~~~

有牛人知道吗?

------解决方案--------------------

一点不奇怪,执行用户不同而已。命令行执行的是root,网页执行的是apache用户。

google了一下,说apache带--enable-suexec编译就可以,但是没试过。

------解决方案--------------------

探讨

一点不奇怪,执行用户不同而已。命令行执行的是root,网页执行的是apache用户。

google了一下,说apache带--enable-suexec编译就可以,但是没试过。

------解决方案--------------------

探讨

以前一直都可以执行的。只是突然不能执行了。所以应该和用户没关系的把。

------解决方案--------------------

这是不可能的。

------解决方案--------------------

看看以 php 命令行方式执行你的程序的结果

------解决方案--------------------

噢,没注意

这显然是用于权限的问题了

web 方式下的 php 只是匿名用户,只有最低的权限

话说回来,如果什么都可以通过浏览器去操控,那么系统哪有安全性可言

想当初微软为了提供便利的数据查询,给 mssql2000 附加了 url 查询功能

结果不就被人利用,而成了臭名昭著的 SQL攻击

------解决方案--------------------

都说了是权限问题,你加了sudo了没,结果怎样?

------解决方案--------------------

应该有的,如果没有你wget下载安装一个。

------解决方案--------------------

后面没有输出我怀疑可能出错了,你试试看一下代码,然后告诉我结果。

function my_exec($cmd, $input='')

{$proc=proc_open($cmd, array(0=>array('pipe', 'r'), 1=>array('pipe', 'w'), 2=>array('pipe', 'w')), $pipes);

fwrite($pipes[0], $input);fclose($pipes[0]);

$stdout=stream_get_contents($pipes[1]);fclose($pipes[1]);

$stderr=stream_get_contents($pipes[2]);fclose($pipes[2]);

$rtn=proc_close($proc);

return array('stdout'=>$stdout,

'stderr'=>$stderr,

'return'=>$rtn

);

}

$str = " /opt/rpm/bin/rpm -bb --target i686--linux /tmp/test.spec";

var_export(my_exec($str));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值