• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 3年前 (2022-01-23) 27次浏览 已收录 0个评论

php system命令在网页和命令行下执行结果不一致
大家好,现在我有一个文件a.php.内容是:

PHP code

<!---ecms Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?$str = " /opt/rpm/bin/rpm -bb --target i686--linux /tmp/test.spec";system($str);?>

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

HTML code

<!---ecms Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->Building target platforms: i686--linux Building for target i686--linux Processing files: VTCUAL06.06C.P010-R1.0-P1 

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

HTML code

<!---ecms Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->Building target platforms: i686--linuxBuilding for target i686--linuxProcessing files: <span style="color:transparent">本文来源gaodai#ma#com搞*!代#%^码$网!</span><strong>搞代gaodaima码</strong>VTCUAL06.06C.P010-R1.0-P1Finding  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 code

<!---ecms Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->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

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

——解决方案——————–
这个问题好奇怪~~~~

有牛人知道吗?
——解决方案——————–
一点不奇怪,执行用户不同而已。命令行执行的是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));
——解决方案——————–


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php system命令在网页和命令行上执行结果不一致

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址