位置: 编程技术 - 正文

如何使用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)的理解(谈谈你对人民美好生活的理解)

  • 2020年小微企业所得税税率
  • 装修款需要开发票吗
  • 公司购买的
  • u8已记账怎么修改年初余额
  • 小企业会计制度及核算办法
  • 预收账款确认收入分录
  • 关联方债务豁免需要缴纳所得税吗
  • 如何确定核定征收的应税所得率
  • 接受投资的固定资产账务处理
  • 普通发票与增值税发票的图片
  • 新房购置税怎么算2022
  • 过期的食品退回去厂里怎么处理
  • 银行发放执行款多久到账
  • 挂靠被查出来后挂靠费怎么处理?
  • 实验用原材料的会计处理
  • 股权转让时其他股东不配合怎么转让
  • 小规模纳税人需要汇算清缴吗
  • 未开票收入怎么做账
  • 房地产企业什么时候交企业所得税
  • 公司注销后资产属于谁
  • 公司账上没钱还假发工资违法吗
  • 住房公积金证书更新
  • 折旧率通俗理解
  • 购买基金会计核算
  • 电子承兑签收后多久可以到账
  • 跨年如何冲减预提费用?
  • mysql高级语句
  • 事业单位需要交个人所得税吗
  • 收到发票已入账什么意思
  • 进项税额转出会计分录福利费
  • 公积金的扣款怎么取消
  • 如何进行抵债资金管理
  • 公司员工意外险,死亡能赔多少钱
  • 'The Wave' sandstone formation in Coyote Buttes North, Paria Canyon-Vermilion Cliffs National Monument, Arizona (© Dennis Frates/Alamy)
  • composer安装不知道这样的主机
  • 代扣代缴企业所得税如何申报
  • 事业单位财政专项资金可以用于职工社保
  • 发票网上平台勾选流程
  • php cache缓存
  • ros机器人自主导航中膨胀地图图层的颜色
  • 图像自动生成
  • -shared
  • 营业外收入账务处理方法
  • 董事会会议中的会议内容
  • java变量初始化的两种方式
  • 财政拨款事业单位的办公用车免征车船税吗
  • 工资是负数怎么办
  • 结转成本计入
  • 新《准则》适用对象为
  • 个人所得税申报退税能退多少
  • 暂估入库账务处理举例
  • 当月的进项税可以不认证吗?
  • 预收租金发票怎么开
  • 投资性房地产在资产负债表哪个科目
  • 营业外支出罚没支出包括
  • 财务的材质怎么写
  • 社保扣费不成功会再次扣费吗
  • 账户信息变更说明
  • 小规模纳税人季报网上申报流程
  • 一家公司一定要有一个社保吗
  • mysql分页性能
  • 畅游盈利
  • solaris syslog
  • avserve2.exe是什么东东
  • mac内存管理在哪里
  • win10周年更新版是什么意思
  • Mac怎么连接扫描仪
  • ubuntu清空文件内容
  • win8怎么设置用户头像
  • perl常用函数
  • perl数组元素个数
  • 安卓图片缓存太占空间
  • shell数据处理
  • 生成0-100的随机数,直到生成88为止,停止循环
  • 重庆电子税务局怎么绑定办税人员
  • 纸质发票怎么查电子发票
  • 一般纳税人出售房产怎么开票
  • 广西税务局发票查验平台
  • 监理费合同按什么计算
  • 鄞江在哪里
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设