PHP vld显示文件输出而不是操作码

时间:2014-09-25 10:04:11

标签: php apache opcode php-opcode

我正在尝试使用vld来查看php文件的操作码

制备

我已经安装了vld:

pecl install channel://pecl.php.net/vld-0.12.0

要熟悉VLD,我正在尝试与php文件(echo1和echo2)进行比较

echo1.php

<?php
echo "Hello"." "."World";

echo2.php

<?php
echo "Hello"," ","World";

phpinfo()显示vld似乎已启用:

vld support        enabled

Directive   Local Value Master Value
vld.active         0    0
vld.col_sep             
vld.dump_paths     1    1
vld.execute        1    1
vld.format         0    0
vld.save_dir       /tmp /tmp
vld.save_paths     0    0
vld.skip_append    0    0
vld.skip_prepend   0    0
vld.verbosity      1    1

问题

运行php文件显示输出而不是操作码

# php -dvld.active=1 -f echo1.php
Hello World

# php -dvld.active=1 -dvld.execute=0 -f echo1.php
Hello World

# php -dvld.active=1 -f echo2.php
Hello World

# php -dvld.active=1 -dvld.execute=0 -f echo2.php
Hello World

显然我错过了一些东西:)

运行的

版本

php版

# php -v
PHP 5.4.4-14+deb7u14 (cli) (built: Aug 21 2014 08:36:44)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

使用Apache 2.2.22在Virtualbox中运行Debian

2 个答案:

答案 0 :(得分:2)

更新到PHP 5.6.2之后,我又给了它一个并且它正在运行:)

php版

# php -v
PHP 5.6.2 (cli) (built: Oct 17 2014 07:22:10)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies

安装梨

yum install php56w-pear

安装vld

pecl install vld

将扩展名添加到/etc/php.ini(或在/etc/php.d / __。ini中的文件中)

#/etc/php.d/vld.ini
extension=vld.so

重新启动httpd服务并再次测试(手指交叉)

 # php -dvld.active=1 -f echo1.php
 Finding entry points
 Branch analysis from position: 0
 Jump found. Position 1 = -2
 filename:       /var/www/html/echo1.php
 function name:  (null)
 number of ops:  4
 compiled vars:  none
 line     #* E I O op                           fetch          ext  return  operands
 -------------------------------------------------------------------------------------
    2     0  E >   CONCAT                                           ~0      'Hello', '+'
          1        CONCAT                                           ~1      ~0, 'World'
          2        ECHO                                                     ~1
    3     3      > RETURN                                                   1

 branch: #  0; line:     2-    3; sop:     0; eop:     3; out1:  -2
 path #1: 0,
 Hello World

Boom Baby!

我不知道为什么,但它按预期工作:)

现在,OPCODE冒险可以开始(也是爱情故事)

答案 1 :(得分:0)

您可能会将extension.so添加到错误的php.ini文件

您可能会将扩展名添加到您的网络服务器而非cli版本

使用的php.ini中

你可以做的是运行locate php.ini,然后选择php.ini的cli版本并将extension.so添加到该文件

通常位于/etc/php5/cli/php.ini

的cli版本的php.ini

别忘了重启你的控制台