详解PHP中如何执行系统命令

 更新时间:2023年12月22日 10:40:20   作者:d0ublewei 大伯为安全  
这篇文章主要为大家介绍了PHP中如何执行系统命令示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

常见方法

使用反引号执行

 <?php
 $result = `ipconfig`;
 $result = iconv('GBK', 'utf-8', $result);
 echo $result;
 ?>

使用 exec

<?php
 $result = exec("ipconfig");
 echo $result;
 ?>

使用 system

<?php
 $result = system("ipconfig");
 echo $result;
 ?>

Windows

读取外部普通文件时

 <?php
 echo (file_get_contents('D:/a.csv'));
 ?>

注意:直接读取即可。

执行系统命令

 <?php
 echo `net start ToDesk_Service`;
 ?>

注意:需要管理员权限或者管理员授权才可以执行。

Linux

Apache

读取外部普通文件时

读取防火墙文件,文件有 r 权限,每级目录都有 rx 权限即可。

<?php
 echo (file_get_contents('/etc/firewalld/zones/public.xml'));
 ?>

执行系统命令时

执行关闭防火墙命令(写一段 PHP 代码,并通过浏览器访问此页面)。

 <?php
 echo `sudo systemctl stop firewalld`;   // 关闭失败
 ?>

找到关于此命令的位置。

 whereis systemctl       # 发现位置在 /usr/bin/systemctl 

查看目录权限,发现每级目录都有 rx 权限,但依然无法执行。

 ll /usr/bin/ | grep systemctl
 ll /usr/ | grep bin
 ll / | grep usr

解决

使用 root 管理员用户

查看 apache 默认用户(写一段 PHP 代码,并通过浏览器访问此页面)。

 <?php
 echo 'whoami';      // 显示默认用户为 daemon
 ?>

尝试改成 root 用户

 cd /opt/lampp/etc   # 切换到 /opt/lampp/etc/ 目录
 vi httpd.conf       # 编辑 httpd.conf 文件
     /User       # 找到 User
     User root       # 改成 root 用户
     Group root      # 改成 root 组

重启 lampp

 /opt/lampp/lampp restart    # 发现启动失败

xampp 集成环境为了安全性考虑不能改成 root 用户访问。

将命令的执行权限赋予给 xampp(Apache)对应的用户。最后执行关闭防火墙命令,即可成功。

 vi /etc/sudoers 或 visudo  # 编辑 /etc/sudoers
 按 G  # 将光标移动到最后一行
 按 i ,添加 daemon ALL=(ALL) NOPASSWD:ALL 或 daemon ALL=(ALL) NOPASSWD:/usr/bin/systemctl,/usr/bin/firewall-cmd  # 添加授权指令
 # 含义:给哪个用户授权 允许哪个主机访问=模拟哪个账号执行命令 不要求输入密码:允许执行的命令路径
图片

以上就是PHP中如何执行系统命令的详细内容,更多关于PHP执行系统命令的资料请关注脚本之家其它相关文章!

相关文章

  • tp5.1 实现setInc字段自动加1

    tp5.1 实现setInc字段自动加1

    今天小编就为大家分享一篇tp5.1 实现setInc字段自动加1示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • 跟我学Laravel之请求(Request)的生命周期

    跟我学Laravel之请求(Request)的生命周期

    这篇文档包含了关于请求生命周期的高层次概述,以及启动文件和应用程序事件的相关内容。是篇非常不错的文章,有需要的朋友可以参考下
    2014-10-10
  • PHP GC回收机制实例详解

    PHP GC回收机制实例详解

    GC的全称是Garbage Collection也就是垃圾回收的意思,在PHP中,是使用引用计数和回收周期来自动管理内存对象的,当一个对象被设置为NULL,或者没有任何指针指向时,他就会变成垃圾,被GC机制回收掉,这篇文章主要介绍了PHP GC回收机制详解 ,需要的朋友可以参考下
    2024-01-01
  • PHP中__LINE__,__FILE__,__DIR__等常用魔术常量实例讲解

    PHP中__LINE__,__FILE__,__DIR__等常用魔术常量实例讲解

    PHP 向它运行的任何脚本提供了大量的预定义常量。魔术常量准确来说并不能算是常量,常量我们在之前的文章中我们介绍到,常量被定义之后是不能被改变的。但是魔术常量是PHP预定义的一些常量,这些预定义的常量能够因为所在位置的变化而变化。
    2022-12-12
  • php中使用GD库做验证码

    php中使用GD库做验证码

    本文给大家分享的是使用php的GD库来实现验证码功能的方法和全部代码,有需要的小伙伴可以参考下
    2016-03-03
  • php中使用array_filter()函数过滤空数组的实现代码

    php中使用array_filter()函数过滤空数组的实现代码

    这篇文章主要介绍了php中使用array_filter()函数过滤空数组的实现代码,这是浏览PHP手册时无意发意的一个有意思的array_filter()函数用法,需要的朋友可以参考下
    2014-08-08
  • YII框架常用技巧总结

    YII框架常用技巧总结

    这篇文章主要介绍了YII框架常用技巧,结合实例形式总结分析了Yii框架控制器、查询、表单验证、SQL查询等常用操作技巧与相关注意事项,需要的朋友可以参考下
    2019-04-04
  • php array_values 返回数组的所有值详解及实例

    php array_values 返回数组的所有值详解及实例

    这篇文章主要介绍了php array_values 返回数组的所有值详解及实例的相关资料,需要的朋友可以参考下
    2016-11-11
  • php设计模式之组合模式实例详解【星际争霸游戏案例】

    php设计模式之组合模式实例详解【星际争霸游戏案例】

    这篇文章主要介绍了php设计模式之组合模式,结合星际争霸游戏案例形式分析了php设计模式之组合模式相关概念、原理、用法及操作注意事项,需要的朋友可以参考下
    2020-03-03
  • Zend Framework入门教程之Zend_Db数据库操作详解

    Zend Framework入门教程之Zend_Db数据库操作详解

    这篇文章主要介绍了Zend Framework入门教程之Zend_Db数据库操作,结合实例形式详细分析了Zend_Db_Adapter的功能及数据库操作的相关技巧,需要的朋友可以参考下
    2016-12-12

最新评论