-
详解PHP中如何执行系统命令
这篇文章主要为大家介绍了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执行系统命令的资料请关注
原文链接:https://mp.weixin.qq.com/s/x_d3r2T2n4NUI80RN-0L8A
栏目列表
最新更新
vbs能调用的系统对象小结
vbscript网页模拟登录效果代码
VBScript 根据IE窗口的标题输出ESC
杀死指定进程名称的小VBS
通过vbs修改以点结尾的文件的属性为隐藏
查询电脑开关机时间的vbs代码
VBA中的Timer函数用法
ComboBox 控件的用法教程
在windows 64位操作系统上运行32位的vbscri
无法执行vbs脚本中遇到的问题及解决方案
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比