apache — PHP vld показывает вывод файла вместо кода операции

Я пытаюсь использовать 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

0

Решение

После обновления до 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 могут начаться (тоже история любви)

2

Другие решения

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

Возможно, вы добавите расширение к php.ini, которое будет использоваться вашим веб-сервером вместо cli версии

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

Обычно Cli версия php.ini находится по адресу /etc/php5/cli/php.ini

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

0

По вопросам рекламы [email protected]