当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2024-03-14 13:54:49 浏览: 评论:0 

这篇文章主要为大家介绍了PHP中如何执行系统命令示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪。

常见方法

使用反引号执行

  1. <?php 
  2. $result = `ipconfig`; 
  3. $result = iconv('GBK''utf-8'$result); 
  4. echo $result
  5. ?> 

使用 exec

  1. <?php 
  2.  $result = exec("ipconfig"); 
  3.  echo $result
  4.  ?> 

使用 system

  1. <?php 
  2.  $result = system("ipconfig"); 
  3.  echo $result
  4.  ?> 

Windows

读取外部普通文件时

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

注意:直接读取即可。

执行系统命令

  1. <?php 
  2. echo `net start ToDesk_Service`; 
  3. ?> 

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

Linux

Apache

读取外部普通文件时

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

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

执行系统命令时

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

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

找到关于此命令的位置。

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

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

  1. ll /usr/bin/ | grep systemctl 
  2. ll /usr/ | grep bin 
  3. ll / | grep usr 

解决

使用 root 管理员用户

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

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

尝试改成 root 用户

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

重启 lampp

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

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

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

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

Tags: PHP如何执行系统命令

分享到: