Home > Backend Development > PHP Tutorial > 利用PHP扩张vld查看PHP opcode

利用PHP扩张vld查看PHP opcode

WBOY
Release: 2016-06-13 12:52:53
Original
912 people have browsed it

利用PHP扩展vld查看PHP opcode

  作者:zhanhailiang 日期:2013-03-04
Copy after login

首先下载最新版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/
Copy after login

接下来编译安装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/
Copy after login

最后将生成的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/
Copy after login

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

<span class="re1" style="color:rgb(0,0,255)">extension</span><span class="sy0" style="color:rgb(102,204,102)">=</span><span class="re2" style="color:rgb(0,0,255)">vld.so</span>
Copy after login

接下来创建test.php文件:

<span class="kw2" style="color:rgb(0,0,0); font-weight:bold"><?php</span>
 
<span class="re0" style="color:rgb(0,0,255)">$a</span> <span class="sy0" style="color:rgb(102,204,102)">=</span> <span class="st0" style="color:rgb(255,0,0)">"hello world"</span><span class="sy0" style="color:rgb(102,204,102)">;</span>
 
<span class="kw1" style="color:rgb(177,177,0)">echo</span> <span class="re0" style="color:rgb(0,0,255)">$a</span> <span class="sy0" style="color:rgb(102,204,102)">.</span> PHP_EOL<span class="sy0" style="color:rgb(102,204,102)">;</span>
Copy after login

使用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&#43;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
Copy after login
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template