详解PHP中如何执行系统命令
发布:smiling 来源: PHP粉丝网 添加日期:2024-03-14 13:54:49 浏览: 评论:0
这篇文章主要为大家介绍了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 # 添加授权指令
- # 含义:给哪个用户授权 允许哪个主机访问=模拟哪个账号执行命令 不要求输入密码:允许执行的命令路径
Tags: PHP如何执行系统命令
- 上一篇:PHP中命令行工具的使用详解
- 下一篇:最后一页
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)