"Не удается найти config.m4". при запуске phpize в установке apd с использованием pecl

Я пытаюсь получить доступ к rename_function в PHP, и для этого мне нужен PECL APD. Я запускаю Ubuntu 14.04 LTS.

Я пытаюсь запустить sudo pecl install apd, но получаю:

downloading apd-1.0.1.tgz ...
Starting to download apd-1.0.1.tgz (36,643 bytes)
..........done: 36,643 bytes
15 source files, building
running: phpize
Cannot find config.m4.
Make sure that you run '/usr/bin/phpize' in the top level source directory of
the module

If the command failed with 'phpize: not found' then you need to install php5-dev package. You can do it by running 'apt-get install php5-dev' as a root userERROR: `phpize' failed

Должен ли я запускать эту команду из определенного каталога?

На этот раз я попробовал его с включенными подробными параметрами, если в журналах есть ключ:

sudo /usr/bin/pecl -vvvvv install apd
Warning: file_exists(): Unable to find the wrapper "channel" - did you forget to enable it when you configured PHP? in PEAR/Downloader/Package.php on line 1518

Warning: is_file(): Unable to find the wrapper "channel" - did you forget to enable it when you configured PHP? in PEAR/Downloader/Package.php on line 1528

Warning: is_file(): Unable to find the wrapper "channel" - did you forget to enable it when you configured PHP? in PEAR/Downloader/Package.php on line 1528
Downloading "http://pecl.php.net/get/apd-1.0.1.tgz"
downloading apd-1.0.1.tgz ...
Starting to download apd-1.0.1.tgz (36,643 bytes)
..........done: 36,643 bytes
+ cp /tmp/pear/temp/tmpNUpEpz/apd-1.0.1/LICENSE /usr/share/php/doc/apd/.tmpLICENSE
adding to transaction: chmod 664 /usr/share/php/doc/apd/.tmpLICENSE
adding to transaction: rename /usr/share/php/doc/apd/.tmpLICENSE /usr/share/php/doc/apd/LICENSE
adding to transaction: installed_as LICENSE /usr/share/php/doc/apd/LICENSE /usr/share/php/doc /apd
+ cp /tmp/pear/temp/tmpNUpEpz/apd-1.0.1/README /usr/share/php/doc/apd/.tmpREADME
adding to transaction: chmod 664 /usr/share/php/doc/apd/.tmpREADME
adding to transaction: rename /usr/share/php/doc/apd/.tmpREADME /usr/share/php/doc/apd/README
adding to transaction: installed_as README /usr/share/php/doc/apd/README /usr/share/php/doc /apd
+ cp /tmp/pear/temp/tmpNUpEpz/apd-1.0.1/pprofp /usr/bin/.tmppprofp
+ chmod +x /usr/bin/.tmppprofp
adding to transaction: chmod 775 /usr/bin/.tmppprofp
adding to transaction: rename /usr/bin/.tmppprofp /usr/bin/pprofp
adding to transaction: installed_as pprofp /usr/bin/pprofp /usr/bin /
+ cp /tmp/pear/temp/tmpNUpEpz/apd-1.0.1/pprof2calltree /usr/bin/.tmppprof2calltree
+ chmod +x /usr/bin/.tmppprof2calltree
adding to transaction: chmod 775 /usr/bin/.tmppprof2calltree
adding to transaction: rename /usr/bin/.tmppprof2calltree /usr/bin/pprof2calltree
adding to transaction: installed_as pprof2calltree /usr/bin/pprof2calltree /usr/bin /
15 source files, building
building in /tmp/pear/temp/pearf7LGca
running: phpize
Cannot find config.m4.
Make sure that you run '/usr/bin/phpize' in the top level source directory of the module

If the command failed with 'phpize: not found' then you need to install php5-dev packageYou can do it by running 'apt-get install php5-dev' as a root userrolling back 12 file operations
+ rm /usr/share/php/doc/apd/.tmpLICENSE
+ rm /usr/share/php/doc/apd/.tmpREADME
+ rm /usr/bin/.tmppprofp
+ rm /usr/bin/.tmppprof2calltree
ERROR: `phpize' failed

Warning: unlink(/tmp/glibctestRdKE0K): No such file or directory in System.php on line 214

Warning: unlink(/tmp/pear/temp/pearf7LGca): No such file or directory in System.php on line 214

Ответ 1

Это будет краткий обзор всего, что является предварительным условием для запуска APD в качестве профилировщика PHP, я надеюсь, что это поможет вашим потребностям. Это резюме относится к PHP 5.6.2 APD 1.0.1 и может быть неправильным для других версий.

Прежде всего, не запускайте его, если вы не обеспечили следующие два:

  • Отключить платформу Zend или любой другой оптимизатор PHP. В общем, вам нужно отключить все расширения Zend.
  • Установить версию с включенной отладкой PHP (--enable-debug)

Если у вас есть рабочая настройка PEAR, вам нужно настроить APD, как в этой статье. Не забудьте также попробовать дистрибутивные пакеты. В противном случае APD построит следующим образом:

  • Извлечь архив.
  • Изменить каталог в tarball.
  • Выполнить <apache root>/bin/phpsize
  • Запустите ./configure (добавьте --with-php-config=<apache root>/bin/php-config, если configure не работает.)
  • Скомпилируйте и установите все, используя
    make
    make install
    
  • Отредактируйте php.ini и добавьте хотя бы
    zend_extension=/apd.so
    apd.statement=1
    apd.tracedir=/tmp/apd-traces
    
  • Создайте выходной каталог, указанный в php.ini

Теперь вам нужно будет перезапустить Apache, но прежде чем это сделать, убедитесь, что расширение APD работает нормально. Чтобы просто запустить PHP

/bin/php

Предупреждение не должно выдаваться, если расширение загружено правильно. Если вы получите сообщение об ошибке, то что-то вроде расширения "apd.so" не может быть загружено, возникает проблема. Проверьте, скомпилированы ли вы против правильной версии Apache/PHP и используете то же самое прямо сейчас.

Если PHP не жалуется ни на что, введите:

<?php phpinfo(); ?>

и проверьте некоторые строки APD. Если вы их найдете, вы закончили.

Вам также понадобятся некоторые следы, чтобы начать трассировку, необходимую вашему Apache, чтобы позволить модулю PHP загружать APD. Затем вам нужно будет идентифицировать script для отслеживания. Добавьте вызов APD в верхней части script:

apd_set_pprof_trace();

Затем выполните некоторые запросы и снова удалите выражение, чтобы не нанести дальнейший вред. Теперь посмотрим на каталог трассировки. Здесь вы должны найти файлы с схемой имен pprof[0-9]*.[0-9]. Декодируйте их с помощью инструмента pprofp из вашего исходного архива APD. Пример:

/bin/php /pprofp -u 

При необходимости перенаправить stdout. Используйте -t вместо -u (итоговый вывод), чтобы получить деревья вызова. Когда вы создаете трассировки с помощью -t, вы также получаете итоговый вывод, но он не содержит продолжительности каждого вызова. Я предлагаю всегда создавать как дерево вызова, так и итоговую трассировку.

Надеюсь, что это поможет, Я рекомендую вам чуть прочитать ссылку, упомянутую выше.

EDIT:

Команда phpize предназначена для запуска на верхнем уровне источника источника расширения (этот исходный каталог должен содержать имя файла config.m4). Для получения дополнительной информации см. .

Ответ 2

В соответствии с ошибкой:

Если команда завершилась с phpize: not found, вам необходимо установить пакет php5-dev.

Вы можете сделать это, запустив apt-get install php5-dev в качестве пользователя root

Я думаю, вы должны установить модульную разработку для PHP через:

sudo apt-get install php5-dev

Это должно предоставить вам двоичный код phpize, необходимый для компиляции источников расширения Pecl. И убедитесь, что это в вашем PATH.