惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
A
About on SuperTechFans
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
aimingoo的专栏
aimingoo的专栏
T
The Blog of Author Tim Ferriss
IT之家
IT之家
罗磊的独立博客
博客园_首页
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
量子位
Hugging Face - Blog
Hugging Face - Blog
G
Google Developers Blog
博客园 - 叶小钗
H
Help Net Security
N
Netflix TechBlog - Medium
B
Blog
Engineering at Meta
Engineering at Meta
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
Vercel News
Vercel News
博客园 - 三生石上(FineUI控件)

博客园 - 慕容木木

DeepSeek Harness - DeepSeek 开源 Agent 运行时底座,万物皆插件,7400+ Star 一日爆火 如何调整3D打印的松紧? 3D耗材拉丝需要干燥的方法 WeMD - 更优雅的 Markdown 公众号排版工具,一键复制到微信 【免费软件】Motrix Next - 全能下载神器回归,体积缩小4倍、迅雷替代 【免费软件】Recordly - 开源录屏神器,一键制作专业演示视频 一场碳基大脑的认知起义 【AI赋能】百宝箱内测OpenClaw,测试推送消息成功,手把手教你怎么做(20260214) 手把手教你安全移除 OpenClaw:全流程清理与避坑指南 【免费领取】OpenClaw 国内部署完全指南,打造你的专属 AI 数字助手(文末有获取方法) OpenClaw爆火背后:我的冷思考 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体的替代品,可本地部署+知识库,注册即可有750w的token使用 即将迎来全民编程时代 免登录的华为小艺+DeepSeek才是yyds,这个结合太丝滑了 Cherry Studio:最强电脑端AI工具合集软件推荐与使用方法(有满血DeepSeek R1的小艺) 全网最全的DeepSeek的使用指导资源,拿去用来操作其他的大模型也一样有用,你去找付费培训不如打赏我一毛 Qwen2.5 Max:最有可能是DeepSeek R1的平替 本地部署最强人工智能服务:方案(一)Chatbox+硅基流动(满血DeepSeek R1) CentOS7安装nvm和node (vm/vb)虚拟机复制或者拷贝之后连不上网络怎么处理? Vmware共享文件夹安装设置方法(window与Linux使用共享文件夹) VirtualBox配置安装入门(Linux连不上网络和设置共享文件夹) PHP性能之语言性能优化:vld——查看代码opcode的神器 PHP性能之语言性能优化:魔术方法好不好? PHP性能之语言性能优化说明 PHP性能:序——谈ab(Apache Bench)压力测试工具
PHP中常见的几种运行代码的方式
慕容木木 · 2018-10-09 · via 博客园 - 慕容木木

常见的运行程序的方法有

  • shell_exec
  • ``(反引号)
  • eval
  • system
  • exec
  • passthru

下面分别介绍他们的用法:

名称 解释 返回值 注意
shell_exec 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。与执行操作符(也叫执行运算符)相同 命令执行的输出。 如果执行过程中发生错误或者进程不产生输出,则返回 NULL  
``(反引号) PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)。使用反引号运算符(`)的效果与函数 shell_exec() 相同。   反引号运算符在激活了安全模式或者关闭了 shell_exec() 时是无效的。
与其它某些语言不同,反引号不能在双引号字符串中使用。
eval 把字符串作为PHP代码执行。 eval() 返回 NULL,除非在执行的代码中 return 了一个值,函数返回传递给 return 的值。 PHP 7 开始,执行的代码里如果有一个 parse error,eval() 会抛出 ParseError 异常。在 PHP 7 之前, 如果在执行的代码中有 parse error,eval() 返回 FALSE,之后的代码将正常执行。无法使用 set_error_handler() 捕获 eval() 中的解析错误。 函数eval()语言结构是 非常危险的, 因为它允许执行任意 PHP 代码。 它这样用是很危险的。 如果您仔细的确认过,除了使用此结构以外 别无方法, 请多加注意,不要允许传入任何由用户 提供的、未经完整验证过的数据 。
system 执行外部程序,并且显示输出。 成功则返回命令输出的最后一行, 失败则返回 FALSE。  
exec 执行一个外部程序。 命令执行结果的最后一行内容。 如果你需要获取未经处理的全部输出数据, 请使用 passthru() 函数。  
passthru 执行外部程序并且显示原始输出。同 exec() 函数类似, passthru() 函数 也是用来执行外部命令(command)的。 当所执行的 Unix 命令输出二进制数据, 并且需要直接传送到浏览器的时候, 需要用此函数来替代 exec() 或 system() 函数。 常用来执行诸如 pbmplus 之类的可以直接输出图像流的命令。 通过设置 Content-type 为 image/gif, 然后调用 pbmplus 程序输出 gif 文件, 就可以从 PHP 脚本中直接输出图像到浏览器。 没有返回值  

其他程序执行函数

    • escapeshellarg — 把字符串转码为可以在 shell 命令里使用的参数
    • escapeshellcmd — shell 元字符转义
    • exec — 执行一个外部程序
    • passthru — 执行外部程序并且显示原始输出
    • proc_close — 关闭由 proc_open 打开的进程并且返回进程退出码
    • proc_get_status — 获取由 proc_open 函数打开的进程的信息
    • proc_nice — 修改当前进程的优先级
    • proc_open — 执行一个命令,并且打开用来输入/输出的文件指针。
    • proc_terminate — 杀除由 proc_open 打开的进程
    • shell_exec — 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。
    • system — 执行外部程序,并且显示输出