Я пытаюсь получить доступ к rename_function
в PHP, и для этого мне нужен PECL APD. Я запускаю Ubuntu 14.04 LTS.
Я пытаюсь запустить sudo pecl install apd
, но я получаю:
загрузка apd-1.0.1.tgz ... Начиная с загрузки apd-1.0.1.tgz (36 643 байта) .......... сделано: 36,643 байт 15 исходных файлов, построение running: phpize Не удается найти config.m4. Убедитесь, что вы запустили '/ usr / bin / phpize' в исходном каталоге верхнего уровня модуль Если команда завершилась неудачей с «phpize: not found», вам необходимо установить пакет php5-dev. Вы можете сделать это, запустив «apt-get install php5-dev» в качестве root userERROR: «phpize» не удалось
Должен ли я запускать эту команду из определенного каталога?
На этот раз я попробовал его с включенными подробными параметрами, если в журналах есть ключ:
sudo / usr / bin / pecl -vvvvv установить apd
Предупреждение: file_exists (): Не удалось найти оболочку «канал» - вы забыли включить ее при настройке PHP? в PEAR / Downloader / Package.php в строке 1518 Предупреждение: is_file (): Не удалось найти оболочку «канал» - вы забыли включить ее при настройке PHP? в PEAR / Downloader / Package.php в строке 1528 Предупреждение: is_file (): Не удалось найти оболочку «канал» - вы забыли включить ее при настройке PHP? в PEAR / Downloader / Package.php в строке 1528 Загрузка «http://pecl.php.net/get/apd-1.0.1.tgz» загрузка apd-1.0.1.tgz ... Начиная с загрузки apd-1.0.1.tgz (36 643 байта) .......... сделано: 36,643 байт + cp /tmp/pear/temp/tmpNUpEpz/apd-1.0.1/LICENSE /usr/share/php/doc/apd/.tmpLICENSE добавление к транзакции: chmod 664 /usr/share/php/doc/apd/.tmpLICENSE добавление к транзакции: rename /usr/share/php/doc/apd/.tmpLICENSE / usr / share / php / doc / apd / LICENSE добавление к транзакции: 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 добавление к транзакции: chmod 664 /usr/share/php/doc/apd/.tmpREADME добавление к транзакции: rename /usr/share/php/doc/apd/.tmpREADME / usr / share / php / doc / apd / README добавление к транзакции: 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 добавление к транзакции: chmod 775 /usr/bin/.tmppprofp добавление к транзакции: rename /usr/bin/.tmppprofp / usr / bin / pprofp добавление к транзакции: 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 добавление к транзакции: chmod 775 /usr/bin/.tmppprof2calltree добавление к транзакции: rename /usr/bin/.tmppprof2calltree / usr / bin / pprof2calltree добавление к транзакции: installed_as pprof2calltree / usr / bin / pprof2calltree / usr / bin / 15 исходных файлов, построение здание в / tmp / pear / temp / pearf7LGca running: phpize Не удается найти config.m4. Убедитесь, что вы запустили '/ usr / bin / phpize' в исходной директории верхнего уровня модуля Если команда завершилась неудачей с «phpize: not found», вам необходимо установить пакет php5-dev. Вы можете сделать это, выполнив «apt-get install php5-dev» в качестве корневой пользовательской активации 12 операций с файлами + rm /usr/share/php/doc/apd/.tmpLICENSE + rm /usr/share/php/doc/apd/.tmpREADME + rm /usr/bin/.tmppprofp + rm /usr/bin/.tmppprof2calltree ОШИБКА: ошибка «phpize» Предупреждение: unlink (/ tmp / glibctestRdKE0K): нет такого файла или каталога в System.php в строке 214 Предупреждение: unlink (/ tmp / pear / temp / pearf7LGca): Нет такого файла или каталога в System.php в строке 214
Это будет краткое резюме всего, что является предварительным условием для запуска APD в качестве профилировщика PHP, я надеюсь, что это поможет вашим потребностям. Это резюме относится к PHP 5.6.2 APD 1.0.1 и может быть неправильным для других версий.
Прежде всего, не начинайте, если вы не обеспечили эти два:
--enable-debug
) Если у вас есть рабочая настройка PEAR, вам нужно настроить APD, как в этой статье. Не забудьте также попробовать дистрибутивные пакеты. В противном случае APD построит следующим образом:
<apache root>/bin/phpsize
./configure
(добавьте --with-php-config=<apache root>/bin/php-config
если configure не работает.) делать сделать установку
zend_extension = / apd.so apd.statement = 1 apd.tracedir = / TMP / APD-следы
Теперь вам нужно будет перезапустить Apache, но прежде чем вы это сделаете, убедитесь, что расширение APD работает нормально. Чтобы просто запустить PHP
/ Bin / PHP
Предупреждение не должно выдаваться, если расширение загружено правильно. Если вы получите сообщение об ошибке, то что-то вроде расширения «apd.so» не может быть загружено, возникает проблема. Проверьте, скомпилированы ли вы против правильной версии Apache / PHP и используете то же самое прямо сейчас.
Если PHP ничего не жалуется, введите:
<?php phpinfo(); ?>
и проверьте некоторые строки о APD. Если вы их найдете, все готово.
Вам также понадобятся некоторые следы, чтобы начать трассировку, необходимую вашему Apache, чтобы позволить модулю PHP загружать APD. Затем вам нужно будет определить сценарий для отслеживания. Добавьте вызов APD в верхней части скрипта:
apd_set_pprof_trace();
Затем выполните некоторые запросы и снова удалите заявление, чтобы не нанести дальнейший вред. Теперь посмотрим на каталог трассировки. Здесь вы должны найти файлы с схемой именования pprof[0-9]*.[0-9]
. Декодируйте их с pprofp
инструмента pprofp
из исходного pprofp
APD. Пример:
/ bin / php / pprofp -u
При необходимости перенаправляйте stdout. Используйте -t вместо -u (итоговый вывод), чтобы получить деревья вызова. Когда вы создаете трассировки с помощью -t, вы также получаете итоговый вывод, но он не содержит продолжительности каждого вызова. Я предлагаю всегда создавать как дерево вызова, так и итоговую трассировку.
Надеюсь, что это поможет, я рекомендую вам едва ли прочитать ссылку, упомянутую выше .
Команда phpize предназначена для запуска на верхнем уровне источника источника расширения (этот источник должен содержать имя файла config.m4). См. Это для получения дополнительной информации.
По ошибке:
Если команда не выполнена с помощью
phpize: not found
вам необходимо установить пакет php5-dev.Вы можете сделать это, запустив
apt-get install php5-dev
в качестве пользователя root
Я думаю, вы должны установить модульную разработку для PHP через:
sudo apt-get install php5-dev
Это должно предоставить вам phpize
код phpize
необходимый для компиляции источников расширения Pecl. И убедитесь, что это в вашей PATH
.