Я пытаюсь использовать 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
Запуск Debian в Virtualbox с Apache 2.2.22
После обновления до 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
Бум Детка!
Я не знаю почему, но все работает как надо 🙂
Теперь приключения OPCODE могут начаться (тоже история любви)
Вы могли бы добавить extension.so
неверный файл php.ini
Возможно, вы добавите расширение к php.ini, которое будет использоваться вашим веб-сервером вместо cli версии
Что вы можете сделать, это запустить locate php.ini
и выберите cli-версию php.ini и добавьте extension.so
в этот файл
Обычно Cli версия php.ini находится по адресу /etc/php5/cli/php.ini
Не забудьте перезагрузить консоль тоже