我正在尝试使用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
答案 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
别忘了重启你的控制台