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

2024-03-01 0 553
目录
  • 常见方法
    • 使用反引号执行
    • 使用 exec
    • 使用 system
  • Windows
    • 读取外部普通文件时
    • 执行系统命令
  • Linux
    • Apache
      • 读取外部普通文件时
      • 执行系统命令时

常见方法

使用反引号执行

<?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执行系统命令的资料请关注悠久资源网其它相关文章!

您可能感兴趣的文章:

  • PHP执行外部命令的函数:exec(),system(),passthru(),shell_exec()
  • PHP网络安全之命令执行漏洞及防御
  • php伪协议实现命令执行详情
  • PHP执行系统命令函数实例讲解
  • PHP执行linux命令6个函数代码实例
  • PHP执行普通shell命令流程解析

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 PHP 详解PHP中如何执行系统命令 https://www.u-9.cn/biancheng/php/181886.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务