Zainstaluj i skonfiguruj XHProf (Ubuntu)

19

Problem

Próbuję użyć XHProf, ale przy każdym uruchomieniu pojawia się straszny błąd 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).

Problem został rozwiązany tutaj, ponieważ folder tymczasowy nie istnieje, tak jak mój.

Skonfiguruj po stronie serwera

Używam nowego Ubuntu Server 13.04 z Drupal 7.

Zainstaluj xhprof, pearpostępując zgodnie z instrukcjami tutaj . Dodałem również katalog tymczasowy do php.ini, który utworzyłem ręcznie.

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

Konfiguracja Drupala

Mam zarówno zainstalowany program, jak i moduł XHProf.

W admin/config/development/xhprof, mam włączone profilowania wszystkich odsłon i drush żądań.

Po kliknięciu linku xhprof otrzymuję powyższy błąd.

wprowadź opis zdjęcia tutaj

Dominic Woodman
źródło

Odpowiedzi:

35

Dobry Boże Batman. To było niesamowicie frustrujące. Oto przewodnik po uruchomieniu xhprof. (Uwaga: jestem nowy w Linuksie. Nie jestem pewien, czy uprawnienia, których używam, są bezpieczne, czy też jest lepszy sposób. Zrobiłbym to tylko w środowisku testowym.)

WAŻNE: nie powie nic o tym, jak to interpretować. Nie mam pojęcia jak, po prostu cieszę się, że to działa.

Uruchomienie XHProf

1. Z jakiego systemu operacyjnego korzystasz?

Mac czy Linux?

To jest możliwe.

Windows?

Prawdopodobnie nie. Aby uruchomić xhprof w systemie Windows, musisz mieć skompilowaną bibliotekę DLL. W tym wątku jest link do jednego , ale zawsze miałem z nim problemy ze zgodnością, gdy próbowałem użyć go na XAMPP.

Myślę, że został skompilowany z inną wersją Apache.

2. Przygotowanie do pracy w systemie Ubuntu

Jest to możliwe na Macu. Oto dwa przydatne linki:

http://www.lullabot.com/blog/article/installing-xhprof-mamp-and-php-52-mac-os-106-snow-leopard http://www.midwesternmac.com/blogs/jeff-geerling / getting-xhprof-well-well

Ale tego nie zrobiłem. Udało mi się uruchomić go na Ubuntu Server 13.04, chociaż myślę, że każda najnowsza wersja Ubuntu Server działałaby.

Skonfigurowałem mój serwer na VirtualBox. VirtualBox jest darmowy, ale nauczenie się jego konfiguracji może trochę potrwać.

3.Instalacja XHProf

Zakładam, że mamy w pełni funkcjonujący serwer Ubuntu.

Najpierw musimy zainstalować gruszkę. Użyjemy tego do zainstalowania XHProf.

sudo apt-get install pear

Śledzimy to za pomocą phpdev, który jest również potrzebny.

sudo apt-get install php5-dev

Jeśli te polecenia nie działają i mam je źle, po prostu idź dalej z:

sudo pecl install -f xhprof

Ubuntu powie ci, czego brakuje, i wyświetli monit o jego zainstalowanie. Po uzyskaniu wszystkich zależności zainstaluj xhprof.

Może pojawić się błąd podczas instalacji xhprof, spróbuje pobrać wersję beta i nie powiedzie się. W takim przypadku spróbuj:

sudo pecl install -f xhprof-beta

Mam nadzieję, że xhprof jest teraz zainstalowany.

Teraz musimy go skonfigurować. Otwórz php.ini, który jest w, /etc/php5/apache2/php.ini i dodaj następujące dwa wiersze w sekcji rozszerzeń:

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

Drugi wiersz ustawia katalog wyjściowy. Jeśli ten folder nie istnieje, musisz go utworzyć. Po ponownym uruchomieniu apache ponownie

sudo service apache2 restart

4. Sprawdzanie, czy XHProf działa

Teraz musimy sprawdzić, czy to zadziałało.

Test 1:

Wchodzić php -m

Jeśli zobaczysz xhprof na liście, możesz zacząć. Jeśli nie, nie martw się, spróbuj zamiast tego sprawdzić, czy działa:

Idź do swojego webroota /var/www/i utwórz plik php tylko:

phpinfo();

Zapisz go jako phpinfo.php. Otwórz to w przeglądarce i powinieneś zobaczyć informacje o PHP. Wyszukaj xhprof, a jeśli go zobaczysz, oznacza to, że jest uruchomiony.

wprowadź opis zdjęcia tutaj

5. Przygotowanie do pracy z Drupal

Nie mogłem go uruchomić z modułem Drupal. Zamiast tego powiem ci, jak to zrobić z modułem devel.

Najpierw trochę konfiguracji, którą stąd pożyczyłem . Tak naprawdę nie podążałem za tą częścią, ale działa, więc podaruj konia i tak dalej.

Utwórz nowy plik konfiguracyjny za pomocą następującego polecenia:

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

i wstaw następujący kod.

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

Następnie prawdopodobnie musimy utworzyć dowiązanie symboliczne do naszego folderu xhprof_html. Więc na wszelki wypadek ustaw:

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

Spowoduje to utworzenie folderu w katalogu głównym, który wskazuje na istniejący plik xhprof. Następnie w przeglądarce możesz otworzyć http://mywebsitehere.com/xhprof, aby zobaczyć wszystkie wykonane przebiegi.

Następnie uruchom ponownie apache. Teraz nadszedł czas na małą konfigurację devel. Przejdź do ustawień devel, włącz xhprof i ustaw:

xhprof directory = /usr/share/php

XHProf URL = /xhprof_html

Teraz na dole każdej strony powinieneś zobaczyć mały link do xhprof.

wprowadź opis zdjęcia tutaj

Kliknięcie go powinno doprowadzić cię do strony, która wygląda następująco. Jesteś skończony. Gratulacje!

wprowadź opis zdjęcia tutaj

Jeśli to nie zadziałało i występują błędy uruchamiania, to prawdopodobnie dlatego, że Drupal nie ma uprawnień do zapisu w folderze tmp, który wcześniej ustawiliśmy, więc wpisz:

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

Mam nadzieję, że to zadziała. Skończyliśmy. Hura!

Chyba że chcesz funkcji graficznych. Na szczęście jest to tak proste jak:

sudo apt-get install graphviz
sudo service apache2 restart

A teraz powinieneś mieć funkcje wykresów. Mam nadzieję, że to pomaga!

Dominic Woodman
źródło
Wow, imponująca odpowiedź. Jeśli chodzi o to, co warto, użyte uprawnienia wydają się rozsądne.
Letharion 10.10.13
Tak, pojawił się poważny ból, który sprawił, że zadziałało. Mam nadzieję, że pomoże komuś innemu (i mnie za dwa miesiące, kiedy zapomnę).
Dominic Woodman
Świetna odpowiedź, działa idealnie, dzięki, aby złagodzić ból :-)
JurgenR
Nie mam /etc/apache2/conf.dkatalogu Zrobiłem sudo nano /etc/apache2/conf-enabled/xhprof.confi a2enconf xhprofzamiast tego
Milkovsky
Dzięki za recenzję. Na Ubuntu 14.04 instalowałem raczej z repozytoriów Ubuntu niż z PEAR i stwierdziłem, że muszę wykonać php5enmod xhprof, aby utworzyć priorytetowe dowiązanie symboliczne z katalogu conf.d do pliku katalogu mods dostępnego dla pliku xhprof.ini. Innym sposobem sprawdzenia, czy xhprof jest włączony, jest uruchomienie php5-fpm -i | grep xhprofphp5-fpm na dowolny SAPI, który sprawdzasz.
Mesch