位置: 编程技术 - 正文

如何使用PHP Embed SAPI实现Opcodes查看器(如何使用定向流量)

编辑:rootadmin

推荐整理分享如何使用PHP Embed SAPI实现Opcodes查看器(如何使用定向流量),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:如何使用灭火器,如何使用3D查看器,如何使用灭火器,如何使用灭火器,如何使用灭火器,如何使用chatgpt,如何使用翻译器在线翻译,如何使用chatgpt,内容如对您有帮助,希望把文章链接给更多的朋友!

PHP提供了一个Embed SAPI,也就是说,PHP容许你在C/C++语言中调用PHP/ZE提供的函数。本文就通过基于Embed SAPI实现一个PHP的opcodes查看器。

首先,下载PHP源码以供编译, 我现在使用的是PHP5.3 alpha2

进入源码目录:

./configure --enable-embed --with-config-file-scan-dir=/etc/php.d --with-mysql --with-config-file-path=/etc/ ./make ./make install

最后,记得要将生成的libphp5.so复制到运行时库的目录,我直接拷贝到了/lib/, 否则会在运行你自己的embed程序的时候报错:

./embed: error while loading shared libraries: libphp5.so: cannot open shared object file: No such file or directory

如果你对PHP的SAPI还不熟悉的话,我建议你看看我的这篇文章:深入理解Zend SAPIs(Zend SAPI Internals)这个时候,你就可以在你的C代码中,嵌入PHP脚本解析器了, 我的例子:

然后就是要指明include path了,一个简单的Makefile

编译成功以后, 运行,我们可以看到, stdout输出 Hello World!

基于这个,我们就可以很容易的实现一个类似于vld的Opcodes dumper:首先我们定义opcode的转换函数(全部的opcodes可以查看Zend/zend_vm_opcodes.h);

如何使用PHP Embed SAPI实现Opcodes查看器(如何使用定向流量)

然后定义zval和znode的输出函数:

然后定义op_array的输出函数:

最后,就是程序的主函数了:

编译,运行测试脚本(sample.php):

命令:

得到输出结果(如果你对下面的结果很迷惑,那么建议你再看看我的这篇文章:深入理解PHP原理之Opcodes):

Script: sample.php

opnum line opcode op1 op2 result 0 2 ZEND_ECHO "laruence" 1 4 ZEND_RETURN 1

呵呵,怎么样,是不是很好玩呢?

谈谈你对Zend SAPIs(Zend SAPI Internals)的理解 SAPI:ServerabstractionAPI,研究过PHP架构的同学应该知道这个东东的重要性,它提供了一个接口,使得PHP可以和其他应用进行交互数据。本文不会详细介绍每

深入php内核之php in array 先给大家介绍phpinarray函数基本知识热热身。定义和用法in_array()函数在数组中搜索给定的值。语法in_array(value,array,type)参数描述value必需。规定要在数组

PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法 PHP用mb_string函数库处理与windows相关中文字符昨天想批处理以前下载的一堆文件,把文件里的关键内容用正则匹配出来,集中处理。在操作文件时遇到一

标签: 如何使用定向流量

本文链接地址:https://www.jiuchutong.com/biancheng/276039.html 转载请保留说明!

上一篇:深入理解PHP内核(二)之SAPI探究(php的核心)

下一篇:谈谈你对Zend SAPIs(Zend SAPI Internals)的理解(谈谈你对人民美好生活的理解)

  • 增值税的专用发票含税吗
  • 出口货物退(免)税管理办法
  • 小规模纳税人申请一般纳税人条件
  • 2023年印花税如何计算
  • 增值税进项税额加计抵减会计处理
  • 研发支出属于什么科目借贷方向
  • 支付货款的会计凭证怎么做
  • 企业所得税资产总额怎么填写
  • 接受投资的固定资产账务处理
  • 多交税款如何处罚
  • 企业政府性征地补偿款如何合法使用
  • 营改增以后算税公式
  • 内蒙古地税电子税务局app
  • 三八妇女节要求小班幼儿到校怎么分享
  • 小微企业开发票优惠政策
  • 建筑公司收取的劳务费和挂靠管理费有区别吗?
  • 初级备考需要多长时间
  • 总资产利润率计算公式是什么意思
  • 金蝶资产减值损失取数计算公式
  • 收到个税返还手续费怎么开发票
  • 电动汽车的出路在哪里
  • 印花税退款分录
  • 王者荣耀中如何隐藏贵族标志
  • deepin切换系统
  • windows10自带桌面时钟
  • php程序员不应该做的事
  • 注销公司如何注销
  • 企业未实际出资
  • php图片生成视频
  • 暂估入库的商品能出库吗
  • 劳务费怎么做会计分裤
  • php微信公众号开发框架
  • php如何连接sql server
  • php file函数
  • 六款小巧的HTTP Server[C语言] 贵贵的博客 开发|架构|开源|共享
  • 居民企业和非居民企业如何判定?
  • 股东借款属于什么科目
  • 增值税发票超过一年未抵扣
  • 教育咨询公司能开培训费发票吗
  • javascript前端开发案例教程源码
  • 顺丰的电子发票是不是只有收到以后能开
  • 劳务派遣公司经营情况说明怎么写
  • 小规模纳税人补开发票如何申报
  • 主要业务活动是什么意思
  • 调整以前年度损益调整什么时候结转
  • 以固定资产换入库存商品
  • 企业所得税资产总额在哪里填列
  • 财政收据使用范围
  • 无形资产原值变更 摊销
  • 招待客户住宿属于什么费用
  • 应付职工薪酬包括辞退福利吗
  • 接受捐赠后怎么发表感言
  • 收到票据又转背书付了账务处理
  • 委托销售产品如何做账
  • 业务提成需要缴纳个人所得税吗?
  • 在建工程的人工费会计分录
  • 建筑总包收到劳务合同
  • 建账的内容一般包括什么
  • sql语句优化之用是什么
  • xbox无法连接无线网络
  • 浏览器登录淘宝安全吗
  • win8.1流畅吗
  • opensuse安装显卡驱动
  • windows 8.1更新
  • win8系统怎么到桌面
  • members-area.exe是什么进程 members-area进程查询
  • win7系统账户名怎么看
  • bat批处理脚本教程
  • shell脚本怎么导出
  • mongoose怎么用
  • nodejs websocket客户端
  • 根据公司发展需求
  • c语言深入剖析
  • JavaScript Try...Catch 声明的 使用方法
  • 安卓手机后退键
  • python web框架2023
  • 国家税务局发票验证查询系统
  • 企业支付的年度报告审计费
  • 国税局和地税局有什么区别
  • 官方客服热线人工台电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设