2014-09-25 4 views
0

Я пытаюсь использовать VLD для просмотра опкода файла PHPPHP VLD показывает вывод файла вместо опкода

приготовительного

Я установил VLD с:

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

Чтобы получить знакомы с ДПД, я пытаюсь сравнить с 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

ответ

1

После обновления 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!

Я не знаю, почему, но это работает, как ожидалось :)

Теперь Опкод приключения могут начать (также история любви)

0

Вы могли бы добавить extension.so к неправильным php.ini файл

Возможно, вы добавили расширение на php.ини этого использования вместо вашего веб-сервера Cli версии

Что вы можете сделать, это запустить locate php.ini, и выбрать версию Cli из php.ini и добавить extension.so в этот файл

Обычно Cli версию php.ini, расположенного по адресу /etc/php5/cli/php.ini

не забудьте перезапустить вашу консоль тоже

+0

Спасибо за ответ, но я не имею этого Cli файл php.ini. 'locate php.ini' только показывал'/etc/php.ini' Двойной проверял это на 'php -i | grep php.ini' 'Загруженный файл конфигурации =>/etc/php.ini' – Paul

+0

@Paul вы запустили' sudo updatedb' – slier