当前位置: 首页 > ops >正文

php执行系统命令的四个常用函数

php执行系统命令有四个常用函数:1.exec()执行命令并返回最后一行输出,可传数组获取全部结果;2.shell_exec()返回完整输出结果,适合一次性获取;3.system()直接输出命令结果,可接收状态码;4.权限控制需过滤输入,使用escapeshellarg()等函数防止注入,避免拼接用户输入,生产环境建议禁用这些函数,确保web服务器用户权限低。 PHP 要执行系统命令,有几个常用函数可以实现。这些函数在某些场景下非常有用,比如执行 shell 命令、调用脚本、处理文件等。但也要注意安全问题,不能随便开放给外部输入。 下面介绍几个常用的函数和使用建议。 exec() 函数 exec() 是最常用的执行系统命令的函数之一。它会执行一个外部命令,并返回最后一行输出内容。 立即学习“PHP免费学习笔记(深入)”; 基本用法:$output = exec(ls -l); echo $output;这个例子会列出当前目录下的文件,并输出最后一行结果。如果你需要获取完整输出,可以传入第二个参数:exec(ls -l, $outputArray); print_r($outputArray);这样就能拿到所有输出行,放在数组里。 注意:如果命令中包含用户输入,一定要做好过滤和验证,防止命令注入攻击。 shell_exec() 函数 shell_exec() 也是执行系统命令的函数,但它返回的是完整的输出结果(包括换行符),适合一次性获取全部输出。 用法示例:$output = shell_exec(whoami); echo 当前用户是:$output;相比 exec(),它更简洁一些,不需要处理数组。 不过同样要注意安全性,尤其是拼接字符串执行命令时,容易被恶意用户利用。 system() 函数 system() 和 exec() 类似,但它会直接输出命令的结果,而不是只返回最后一行。 示例:system(ls -la);这个函数适合需要实时看到命令输出的场景,比如调试或运行长时间任务。 还有一个可选参数可以接收状态码:system(ls -la, $status); echo 命令执行状态码: . $status;状态码为 0 通常表示成功,非零则可能出错。 安全建议与注意事项 避免直接拼接用户输入 比如不要写成这样:exec(ping  . $_GEThost);这样很容易被注入其他命令,例如 127.0.0.1; rm -rf /。 正确做法是对输入做白名单过滤,或者使用安全函数如 escapeshellarg() 或 escapeshellcmd()。 尽量不启用这些函数 在生产环境中,如果不是必须的功能,建议禁用这些函数。可以在 php.ini 中设置:disable_functions = exec,shell_exec,system,passthru,... 权限控制要到位 PHP 执行系统命令时,是以 Web 服务器的运行用户身份进行的。确保这个用户的权限足够低,防止误操作或恶意行为造成严重后果。 基本上就这些。这几个函数各有特点,根据实际需求选择即可。用的时候多留心安全问题,别图省事。
另外我们在日常开发中通常会用到各种API接口,比如查询用户IP归属地,手机号归属地,天气预报,万年历等,ICP备案,表情包,壁纸等等,这时我们可以直接去接口盒子https://www.apihz.cn 查找需要的API即可。接口盒子有数百个免费API,而且采用集群化服务器部署,比一般的API服务商更加稳定。

http://www.xdnf.cn/news/12340.html

相关文章:

  • 西北某省级联通公司:3D动环模块如何实现机房“一屏统管”?
  • [蓝桥杯]轨道炮
  • android debug包和release包的区别
  • 解决 VSCode 中无法识别 Node.js 的问题
  • Python训练营打卡DAY46
  • day 46
  • UNECE R158——解读自动驾驶相关标准法规(VRU)
  • 实践提炼,EtherNet/IP转PROFINET网关实现乳企数字化工厂增效
  • MySQL 回表、索引覆盖与查询优化
  • 5.1 HarmonyOS NEXT系统级性能调优:内核调度、I/O优化与多线程管理实战
  • 高等数学》(同济大学·第7版)第二章第一节“导数的概念“
  • 西安国际数字科创产业园:数字产业生态的开拓者
  • [Spring]-AOP
  • STM32外设问题总结
  • C/C++ 面试复习笔记(4)
  • npm install的原理
  • 传统业务对接AI-AI编程框架-Rasa的业务应用实战(5)--Rasa成型可用 rasa服务化部署及识别意图后的决策及行为
  • 企业私有化部署的平价革命:五步实现“低成本高可控”AI落地——破除百万投入迷思,中小企业也能玩转私有化大模型
  • JDBC(二) 综合案列、SQL注入问题、封装工具类、ORM
  • Windows Server 2016 域环境搭建
  • 类Transformer架构
  • 【Linux】awk 命令详解及使用示例:结构化文本数据处理工具
  • Linux LVM与磁盘配额
  • RFID推动新能源汽车零部件生产系统管理应用案例
  • React---day10
  • Caliper 配置文件解析:config.yaml 和 fisco-bcos.json 附加在caliper中执行不同的合约方法
  • Spring Cloud核心组件深度解析(2025终极指南)
  • 数学复习笔记 28
  • 2123:图的存储与访问
  • Java -jar命令运行外部依赖JAR包的深度场景分析与实践指南