Установите и настройте XHProf (Ubuntu)

19

проблема

Я пытаюсь использовать XHProf, но каждый раз получаю ужасную ошибку php.

Warning: Invalid argument supplied for foreach() in xhprof_compute_inclusive_times() (line 1670 of /var/www/drupal/sites/all/modules/XHProf/xhprof.inc).
Warning: Invalid argument supplied for foreach() in xhprof_compute_flat_info() (line 1644 of /var/www/drupal/sites/all/modules/XHProf/xhprof.inc).
Warning: Invalid argument supplied for foreach() in theme_xhprof_overall_summary() (line 367 of /var/www/drupal/sites/all/modules/XHProf/xhprof.module).

Проблема решается здесь, потому что временная папка не существует, а моя существует.

Настройка на стороне сервера

Я использую свежий Ubuntu Server 13.04 с Drupal 7.

Установите xhprof, pearследуя инструкциям здесь . Я также добавил временный каталог в php.ini, который я создал вручную.

extension=xhprof.so
xhprof.output_dir="/var/tmp/xhprof"

Drupal Set-Up

У меня установлен и devel, и я также установил модуль XHProf.

В admin/config/development/xhprof, я включил профилирование всех просмотров страниц и запросов на загрузку.

При переходе по ссылке xhprof я получаю сообщение об ошибке выше.

введите описание изображения здесь

Доминик Вудман
источник

Ответы:

35

Боже, Бэтмен. Это было невероятно сложно. Вот руководство по работе с xhprof. (Примечание: я очень плохо знаком с Linux. Я не уверен, безопасны ли используемые мной разрешения, или есть ли лучший способ сделать это. Я бы делал это только в тестовой среде.)

ВАЖНО: Он не скажет вам ничего о том, как его интерпретировать. Я понятия не имею, как, я просто счастлив, что это работает.

Начало работы XHProf

1. Какую операционную систему вы используете?

Mac или Linux?

Это возможно.

Окна?

Возможно нет. Для запуска xhprof на окнах вы должны иметь скомпилированную DLL. В этой теме есть ссылка на нее, но у меня всегда были проблемы с совместимостью, когда я пытался использовать ее на XAMPP.

Я думаю, что он был скомпилирован с другой версией Apache.

2. Как это работает на Ubuntu

Это возможно на Mac. Вот две полезные ссылки:

http://www.lullabot.com/blog/article/install-xhprof-mamp-and-php-52-mac-os-106-snow-leopard http://www.midwesternmac.com/blogs/jeff-geerling / посаживания xhprof-работоспособного хорошо

Но я этого не сделал. Мне удалось заставить его работать на Ubuntu Server 13.04, хотя я думаю, что любая последняя версия Ubuntu Server будет работать.

Я настроил свой сервер на VirtualBox. VirtualBox бесплатен, но может потребоваться немного времени, чтобы узнать, как его настроить.

3. Установка XHProf

Я собираюсь предположить, что у нас есть полностью работающий сервер Ubuntu.

Сначала нам нужно установить грушу. Мы будем использовать это для установки XHProf.

sudo apt-get install pear

Мы следим за этим с помощью phpdev, который также необходим.

sudo apt-get install php5-dev

Если эти команды не работают, и я их неправильно понял, просто продолжайте:

sudo pecl install -f xhprof

Ubuntu сообщит вам, что вам не хватает, и предложит установить его. Как только вы получите все зависимости, установите xhprof.

Вы можете получить ошибку при установке xhprof, он попытается загрузить бета-версию и потерпит неудачу. В этом случае попробуйте:

sudo pecl install -f xhprof-beta

Надеюсь, xhprof теперь установлен.

Теперь нам нужно это настроить. Откройте свой php.ini, который находится по адресу, /etc/php5/apache2/php.ini и добавьте следующие две строки в разделе расширений:

extension=xhprof.so
xhprof.output_dir="/var/tmp/xhprof"

Вторая строка устанавливает выходной каталог. Если эта папка не существует, вам придется ее создать. Когда вы выполните эту перезагрузку Apache, используя

sudo service apache2 restart

4. Проверка, работает ли XHProf

Теперь нам нужно проверить, сработало ли это.

Тест 1:

Войти php -m

Если вы видите xhprof в списке, вы можете пойти. Если нет, не беспокойтесь, попробуйте вместо этого проверить, работает ли он:

Перейдите в свой webroot /var/www/и создайте php-файл только с:

phpinfo();

Сохраните его как phpinfo.php. Откройте это в вашем браузере, и вы должны увидеть информацию PHP. Ищите xhprof, и если вы видите это, то оно работает.

введите описание изображения здесь

5. Начало работы с Drupal

Я не мог заставить его работать с модулем Drupal. Вместо этого я расскажу вам, как заставить его работать с модулем devel.

Сначала немного конфига, который я позаимствовал здесь . Я действительно не следовал этой части, но она работает так, как подарок лошади и все такое.

Создайте новый файл конфигурации с помощью следующей команды:

sudo nano /etc/apache2/conf.d/xhprof.conf

и вставьте следующий код.

alias /xhprof_html "/usr/share/php/xhprof_html/"

Тогда нам, возможно, понадобится создать символическую ссылку на нашу папку xhprof_html. Так что на всякий случай установите это:

ln -s / usr / share / php / xhprof_html / var / www / xhprof_html

Это создаст папку в вашем webroot, которая указывает на существующий файл xhprof. Затем в вашем браузере вы можете открыть http://mywebsitehere.com/xhprof, чтобы увидеть все прогоны, которые вы сделали.

Затем перезапустите Apache. Теперь пришло время для небольшой конфигурации devel. Зайдите в настройки devel, включите xhprof и установите:

xhprof directory = /usr/share/php

XHProf URL = /xhprof_html

Теперь внизу каждой страницы вы должны увидеть небольшую ссылку на xhprof.

введите описание изображения здесь

И нажав на нее, вы попадете на страницу, которая выглядит следующим образом. Вы сделали Поздравляем!

введите описание изображения здесь

Если это не сработало, и вы получаете ошибки запуска, возможно, потому что у Drupal нет разрешения на запись в папку tmp, которую мы установили ранее, поэтому введите:

sudo chown -R www-data /var/tmp/xhprof

И, надеюсь, это работает. Были сделаны. Hoorah!

Если вы не хотите графических функций. К счастью, это так просто, как:

sudo apt-get install graphviz
sudo service apache2 restart

И теперь у вас должны быть графические функции. Надеюсь, это поможет!

Доминик Вудман
источник
Вау, впечатляющий ответ. Для чего это стоит, разрешения, которые вы использовали, кажутся нормальными.
Летарион
Да, была какая-то серьезная боль, заставляющая это работать. Надеюсь, это поможет кому-то другому (и мне через два месяца, когда я забуду).
Доминик Вудман,
Отличный ответ, работает отлично, спасибо, чтобы облегчить боль :-)
JurgenR
У меня нет /etc/apache2/conf.dкаталога. Я сделал sudo nano /etc/apache2/conf-enabled/xhprof.confи a2enconf xhprofвместо этого
Milkovsky
Спасибо за прогон. На Ubuntu 14.04 я установил из репозиториев Ubuntu, а не PEAR, и обнаружил, что мне нужно выполнить php5enmod xhprof, чтобы создать приоритетную символическую ссылку из каталога conf.d в файл каталога xhprof.ini, доступный для модов. Другой способ проверить, включен ли xhprof, - это запустить php5-fpm -i | grep xhprof, заменив php5-fpm тем SAPI, который вы проверяете.
Mesch