利用PHP扩展vld查看PHP opcode操作步骤


Posted in PHP onMarch 04, 2013

首先下载最新版vld扩展:

~/public_html/php-5.3.13/ext> wget http://pecl.php.net/get/vld-0.11.2.tgz 
~/public_html/php-5.3.13/ext> tar zxvf vld-0.11.2.tgz 
~/public_html/php-5.3.13/ext> cd vld-0.11.2/

接下来编译安装vld扩展:
~/public_html/php-5.3.13/ext/vld-0.11.2> phpize 
~/public_html/php-5.3.13/ext/vld-0.11.2> ./configure --with-php-config=/usr/local/services/php/bin/php-config --enable-vld 
~/public_html/php-5.3.13/ext/vld-0.11.2> make 
~/public_html/php-5.3.13/ext/vld-0.11.2> sudo make install 
Installing shared extensions: /usr/local/services/php/lib/php/extensions/no-debug-non-zts-20090626/

最后将生成的vld.so复制到extension_dir目录下:
~/public_html/php-5.3.13/ext/vld-0.11.2> cd /usr/local/services/php/lib/php/extensions/no-debug-non-zts-20090626/ 
/usr/local/services/php/lib/php/extensions/no-debug-non-zts-20090626> sudo cp vld.so /usr/local/services/php/extensions/

然后修改php.ini文件,添加如下配置:
extension=vld.so

接下来创建test.php文件:
<?php 
$a = "hello world"; 
echo $a . PHP_EOL;

使用cli来执行,查看生成的opcode:
~/public_html> php -dvld.active=1 test.php 
Finding entry points 
Branch analysis from position: 0 
Return found 
filename: /home/zhanhailiang/public_html/test.php 
function name: (null) 
number of ops: 4 
compiled vars: !0 = $a 
line # * op fetch ext return operands 
--------------------------------------------------------------------------------- 
3 0 > ASSIGN !0, 'hello+world' 
5 1 CONCAT ~1 !0, '%0A' 
2 ECHO ~1 
6 3 > RETURN 1 
branch: # 0; line: 3- 6; sop: 0; eop: 3 
path #1: 0, 
hello world
PHP 相关文章推荐
PHP获取类中常量,属性,及方法列表的方法
Apr 09 PHP
php is_file 判断给定文件名是否为一个正常的文件
May 10 PHP
使用cookie实现统计访问者登陆次数
Jun 08 PHP
深入file_get_contents与curl函数的详解
Jun 25 PHP
提高PHP性能的编码技巧以及性能优化详细解析
Aug 24 PHP
PHP生成随机数的方法实例分析
Jan 22 PHP
详解PHP错误日志的获取方法
Jul 20 PHP
Thinkphp5行为使用方法汇总
Dec 21 PHP
Yii2.0 RESTful API 基础配置教程详解
Dec 26 PHP
PHP字符串中抽取子串操作实例分析
Jun 22 PHP
php web环境和命令行环境下查找php.ini的位置
Jul 17 PHP
PHP7原生MySQL数据库操作实现代码
Jul 03 PHP
PHP对MongoDB[NoSQL]数据库的操作
Mar 01 #PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
Feb 28 #PHP
Apache中php.ini的设置方法
Feb 28 #PHP
PHP中如何定义和使用常量
Feb 28 #PHP
使用php判断浏览器的类型和语言的函数代码
Feb 28 #PHP
CI框架源码阅读,系统常量文件constants.php的配置
Feb 28 #PHP
PHP删除非空目录的函数代码小结
Feb 28 #PHP
You might like
php下使用无限生命期Session的方法
2007/03/16 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
2016/04/02 PHP
利用PHP实现一个简单的用户登记表示例
2017/04/25 PHP
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
Jquery取得iframe下内容的方法
2013/11/18 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
javascript 面向对象封装与继承
2014/11/27 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
JavaScript生成随机字符串的方法
2015/03/19 Javascript
在IE8上JS实现combobox支持拼音检索功能
2016/05/23 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
JavaScript实现格式化字符串函数String.format
2016/12/16 Javascript
js鼠标移动时禁止选中文字
2017/02/19 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
2018/07/01 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
JavaScript怎样在删除前添加确认弹出框?
2019/05/27 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
python3 kmp 字符串匹配的方法
2018/07/07 Python
python实现梯度下降算法
2020/03/24 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
python 获取当前目录下的文件目录和文件名实例代码详解
2020/03/10 Python
matplotlib基础绘图命令之bar的使用方法
2020/08/13 Python
python Tornado框架的使用示例
2020/10/19 Python
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
学生请假条
2014/04/11 职场文书
运动员口号
2014/06/09 职场文书
义和团口号
2014/06/17 职场文书
2016年幼儿园教研活动总结
2016/04/05 职场文书