位置: 编程技术 - 正文

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

  • 管理会计期末存货计算公式
  • 所得税费用在利润表中应在税金及附加项目中填列
  • 税务登记财务负责人可以是法人吗
  • 小规模购买金税盘
  • 冲账其他应付款
  • 调整上年度所得税计提分录
  • 民营医院增值税政策
  • 给职工买的意外险怎么做账
  • 停车场增加收入
  • 15-算
  • 企业财务月确定不当造成税务问题
  • 往年银行余额和账目不符怎么调整
  • 一年内到期的应收质保金
  • 收取手续费的委托代销 发票谁来开
  • 移动电子发票显示无法开具怎么获取发票
  • windowsserver2003设置用户密码
  • 营改增后的增值税税率
  • 投资收益率的作用
  • 律师费能计入办公费用吗
  • 进项加计扣除如何做分录
  • 超市预售卡怎么记账
  • mac教程视频
  • ahqinit.exe是什么进程 ahqinit是安全的进程吗
  • linux中的文件
  • PHP:curl_multi_getcontent()的用法_cURL函数
  • thinkphp yii
  • 照片文件夹如何压缩
  • 什么食物含胆固醇高不能吃
  • PHP:mcrypt_module_get_supported_key_sizes()的用法_Mcrypt函数
  • 出口退免税备案
  • echarts地图tooltip
  • php rest api
  • 浅谈php中类和对象的区别
  • html代码form
  • php的难点
  • 商户待清算账户是什么
  • 社保费和公积金一定要计提吗
  • 工地购买的厨房用品计入哪个科目
  • 织梦如何添加浮动广告
  • 固定资产净残值账务处理
  • 企业成立刻章流程
  • 坏账损失的会计分录小企业会计准则
  • 存货出入库需要什么凭证
  • 工伤保险退费了是什么意思
  • 差旅费报销时如何处理
  • 主营业务收入账务处理分录
  • 办理税务登记需要多久
  • 出口退税的发票是专票还是普票
  • 合并财务报表内部往来如何抵消
  • 小规模企业税金怎么做账
  • 公司成立前购买的固定资产
  • 收取加盟费的条件
  • 股东出资转为借款
  • 怎么把应付账款调成应收
  • 研发部门的房租一次记入还是分摊
  • 税控盘超过15号还可以抄报吗
  • 工资尾数差异财务怎么算
  • 锁mysql
  • win8开机启动项怎么设置方法
  • win7怎么添加设备
  • 卡巴斯基key
  • Apple Watch怎么解绑ID
  • ubuntu静态ip地址
  • window7窗口
  • 电脑联想windows7
  • windows 7安装步骤
  • window7文件查看方式
  • linux命令行技巧
  • [置顶]bilinovel
  • ztree getnodebytid
  • nodejs爬取数据
  • middle html
  • Cocos2dx CCLabelAtlas字体与CCLabelTTF字体的使用方法
  • 浅析学校德育的个体智能发展功能
  • 批处理加密工具
  • python-pip安装
  • 如何计算白酒的出酒率
  • 海南省税务局长
  • 税务网上申报怎样操作
  • 云南2021高考改革
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设