安装php的parsekit扩展查看opcode

我们知道PHP是一门解释型语言,用它们编写的动态内容都需要依赖相应的解释器程序来运行,解释器程序需要对输入的脚本代码进行分析,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。

想要查看php程序的opcode,需要安装php的parsekit扩展。
安装过程如下:
[root@localhost ~]# wget http://pecl.php.net/get/parsekit-1.3.0.tgz
[root@localhost ~]# tar zxvf parsekit-1.3.0.tgz
[root@localhost ~]# cd parsekit-1.3.0
[root@localhost parsekit-1.3.0]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
[root@localhost parsekit-1.3.0]# ./configure -with-php-config=/usr/local/php/bin/php-config
[root@localhost parsekit-1.3.0]# make
[root@localhost parsekit-1.3.0]# make install
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
然后编辑php.ini文件,在里面加上
extension="parsekit.so"
[root@localhost parsekit-1.3.0]# vim /usr/local/php/etc/php.ini
这样我们就成功的安装了parsekit扩展了(注:楼主是在php5.2下安装的parsekit扩展,在php5.4,php5.5下会提示编译失败)。

当然还有一种更简单的安装parsekit的方法,那就是直接使用pecl。
在命令行下输入命令:
[root@localhost parsekit-1.3.0]# /usr/local/php/bin/pecl install parsekit
这样就可以自动帮你安装parsekit了。

然后,我们在命令行下输入:
[root@localhost parsekit-1.3.0]# /usr/local/php/bin/php -r "var_dump(parsekit_compile_string('print 1+1;'));"
这样就可以查看php代码的opcode了。
结果如下:
array(20) {
  ["type"]=>
  int(4)
  ["type_name"]=>
  string(14) "ZEND_EVAL_CODE"
  ["fn_flags"]=>
  int(0)
  ["num_args"]=>
  int(0)
  ["required_num_args"]=>
  int(0)
  ["pass_rest_by_reference"]=>
  bool(false)
  ["uses_this"]=>
  bool(false)
  ["line_start"]=>
  int(0)
  ["line_end"]=>
  int(0)
  ["return_reference"]=>
  bool(false)
  ["refcount"]=>
  int(1)
  ["last"]=>
  int(5)
  ["size"]=>
  int(5)
  ["T"]=>
  int(2)
  ["last_brk_cont"]=>
  int(0)
  ["current_brk_cont"]=>
  int(4294967295)
  ["backpatch_count"]=>
  int(0)
  ["done_pass_two"]=>
  bool(true)
  ["filename"]=>
  string(17) "Parsekit Compiler"
  ["opcodes"]=>
  array(5) {
    [0]=>
    array(8) {
      ["address"]=>
      int(29981148)
      ["opcode"]=>
      int(1)
      ["opcode_name"]=>
      string(8) "ZEND_ADD"
      ["flags"]=>
      int(197378)
      ["result"]=>
      array(3) {
        ["type"]=>
        int(2)
        ["type_name"]=>
        string(10) "IS_TMP_VAR"
        ["var"]=>
        int(0)
      }
      ["op1"]=>
      array(3) {
        ["type"]=>
        int(1)
        ["type_name"]=>
        string(8) "IS_CONST"
        ["constant"]=>
        &int(1)
      }
      ["op2"]=>
      array(3) {
        ["type"]=>
        int(1)
        ["type_name"]=>
        string(8) "IS_CONST"
        ["constant"]=>
        &int(1)
      }
      ["lineno"]=>
      int(1)
    }
    [1]=>
    array(7) {
      ["address"]=>
      int(29981268)
      ["opcode"]=>
      int(41)
      ["opcode_name"]=>
      string(10) "ZEND_PRINT"
      ["flags"]=>
      int(770)
      ["result"]=>
      array(3) {
        ["type"]=>
        int(2)
        ["type_name"]=>
        string(10) "IS_TMP_VAR"
        ["var"]=>
        int(1)
      }
      ["op1"]=>
      array(3) {
        ["type"]=>
        int(2)
        ["type_name"]=>
        string(10) "IS_TMP_VAR"
        ["var"]=>
        int(0)
      }
      ["lineno"]=>
      int(1)
    }
    [2]=>
    array(7) {
      ["address"]=>
      int(29981388)
      ["opcode"]=>
      int(70)
      ["opcode_name"]=>
      string(9) "ZEND_FREE"
      ["flags"]=>
      int(271104)
      ["op1"]=>
      array(4) {
        ["type"]=>
        int(2)
        ["type_name"]=>
        string(10) "IS_TMP_VAR"
        ["var"]=>
        int(1)
        ["EA.type"]=>
        int(0)
      }
      ["op2"]=>
      array(3) {
        ["type"]=>
        int(8)
        ["type_name"]=>
        string(9) "IS_UNUSED"
        ["opline_num"]=>
        string(1) "0"
      }
      ["lineno"]=>
      int(1)
    }
    [3]=>
    array(7) {
      ["address"]=>
      int(29981508)
      ["opcode"]=>
      int(62)
      ["opcode_name"]=>
      string(11) "ZEND_RETURN"
      ["flags"]=>
      int(16777984)
      ["op1"]=>
      array(3) {
        ["type"]=>
        int(1)
        ["type_name"]=>
        string(8) "IS_CONST"
        ["constant"]=>
        &NULL
      }
      ["extended_value"]=>
      int(0)
      ["lineno"]=>
      int(1)
    }
    [4]=>
    array(5) {
      ["address"]=>
      int(29981628)
      ["opcode"]=>
      int(149)
      ["opcode_name"]=>
      string(21) "ZEND_HANDLE_EXCEPTION"
      ["flags"]=>
      int(0)
      ["lineno"]=>
      int(1)
    }
  }
}

时间: 2024-11-18 15:12:22

安装php的parsekit扩展查看opcode的相关文章

LNMP如何安装缓存加速类扩展、imageMagick、ionCube

本教程仅适用于LNMP1.2或更高的版本,eAccelerator.xcache.memcached.imageMagick.ionCube.redis.opcache这几个PHP缓存.加速类的扩展不是每个人都能用到,我们可以选择自己所需要的安装,同类的扩展不建议安装多个,担心导致出错.具体请看下面: 这些扩展和组件均采用./addons.sh进行安装.基本用法说明:./addons.sh {install|uninstall} {eaccelerator|xcache|memcached|op

安装tclip的php扩展

Tclip是一个智能图片裁剪程序.目前已经开源,由我维护. Tclip的定位是智能图片裁剪,即裁剪后的图片会把图片中的重要区域保留.Tclip提供了php扩展方式使用.具体安装过程分为两步.第一步是安装opencv2.第二步是安装php扩展. 安装过程中有任何疑问可以加qq 179815944咨询.安装opencv2 tclip中的人脸识别使用了opencv.因此需要先安装opencv. 1. 安装opencv的依赖包. gtk+ gtk+-devel pkgconfig libpng zlib

安装PHP的memcache扩展

网站出现错误Fatal error: Class 'Memcache' not found 错误原因是因为memcache模块的问题,需要安装memcache并在php.ini中指定memcache模块. 安装PHP的memcache扩展方法如下(这里安装的只是个模块) 下载及编译安装 memcache下载地址http://pecl.php.net/package/memcache 这里beta表示的是测试版本,stable是稳定版本,根据个人需要选择,点击Downloads下的.tgz的包即可

Yii安装与使用Excel扩展的方法_php实例

本文实例讲述了Yii安装与使用Excel扩展的方法.分享给大家供大家参考,具体如下: 1.下载EExcelBehavior到项目扩展目录下 2.下载phpexcl到扩展目录 3.控制器调用: /** * 导出列表,各商家保障金列表 */ public function actionExport(){ $model = $model=new Company('search'); $model->unsetAttributes(); // clear any default values $mode

centos yum 安装 mongodb 以及php扩展_MongoDB

一,安装mongodb,php扩展 [root@localhost ~]# yum install php-pecl-mongo mongodb mongodb-devel mongodb-server php扩展,mongodb服务端,mongodb客户就装好了. 二,配置/etc/mongodb.conf [root@localhost www]# cat /etc/mongodb.conf |awk '{if($0 !~ /^$/ && $0 !~ /^#/) {print $0}}

如何安装chrome wiz笔记扩展

一直使用wiz笔记,感觉还是不错的,但是一前一段时间,wiz笔记的 chrome的截图扩展不能使用了,一直没有找到相应的解决办法 ,没办法只好下载了有道笔记,怎么说了,感觉不如wiz的使用起来比较爽,但是 chrome扩展不能使用,很是让人着急, 真到看到以下内容,才把wiz的扩展安装上,感觉又回来了 添加其他网站上的扩展程序 我们一直在设法带给您更加安全的浏览体验.为此,我们最近更改了您向浏览器添加非 Chrome 网上应用店扩展程序的方式.以前,任何一家网站都会提示您向自己的浏览器添加扩展程

Linux系统中PHP安装配置MongoDB数据库连接扩展步骤

说明: 操作系统:CentOS 5.X 64位 MongoDB数据库服务器: IP地址:192.168.21.130 Web服务器: IP地址:192.168.21.127 PHP安装路径:/usr/local/php 实现目的: 安装PHP的MongoDB数据库扩展,通过PHP程序连接MongoDB数据库 具体操作: 一.安装PHP的MongoDB数据库扩展(在Web服务器192.168.21.127上操作) 下载地址:http://pecl.php.net/get/mongo-1.5.1.t

Yii安装与使用Excel扩展的方法

本文实例讲述了Yii安装与使用Excel扩展的方法.分享给大家供大家参考,具体如下: 1.下载EExcelBehavior到项目扩展目录下 2.下载phpexcl到扩展目录 3.控制器调用: /** * 导出列表,各商家保障金列表 */ public function actionExport(){ $model = $model=new Company('search'); $model->unsetAttributes(); // clear any default values $mode

Linux下安装PHP的lua扩展库

  一.安装Lua 5.3.4 下载 http://www.lua.org/ftp/lua-5.3.4.tar.gz tar xvf lua-5.3.4.tar.gz cd lua-5.3.4 重要:进入解压缩后的路径 cd .../lua-5.3.4/src 打开Makefile文件 在CFLAG一行 添加选项 -fPIC 像这样: 找到源文件的这行替换掉 CFLAGS= -O2 -Wall -DLUA_COMPAT_ALL $(SYSCFLAGS) -fPIC $(MYCFLAGS) 然后编