Installieren und Konfigurieren von XHProf (Ubuntu)

19

Problem

Ich versuche, XHProf zu verwenden, aber ich erhalte jedes Mal einen schrecklichen PHP-Fehler, wenn es ausgeführt wird.

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).

Das Problem ist hier behoben , da der temporäre Ordner nicht vorhanden ist, meiner jedoch.

Server-Seite einrichten

Ich verwende einen neuen Ubuntu Server 13.04 mit Drupal 7.

Installieren Sie xhprof, indem Sie peardie Anweisungen hier befolgen . Ich habe auch ein temporäres Verzeichnis zu php.ini hinzugefügt, das ich manuell erstellt habe.

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

Drupal-Setup

Ich habe sowohl den Entwickler als auch das XHProf-Modul installiert.

In habe admin/config/development/xhprofich die Profilerstellung für alle Seitenaufrufe und Drush-Anforderungen aktiviert.

Wenn ich einem xhprof-Link folge, erhalte ich den obigen Fehler.

Bildbeschreibung hier eingeben

Dominic Woodman
quelle

Antworten:

35

Guter Gott Batman. Das war unglaublich frustrierend. Hier ist eine Anleitung, um xhprof zum Laufen zu bringen. (Hinweis: Ich bin sehr neu in Linux. Ich bin nicht sicher, ob die von mir verwendeten Berechtigungen sicher sind oder ob es eine bessere Möglichkeit gibt. Ich würde dies nur in einer Testumgebung tun.)

WICHTIG: Es sagt Ihnen nichts darüber aus, wie es zu interpretieren ist. Ich habe keine Ahnung, wie es geht, ich bin nur froh, dass es funktioniert.

XHProf zum Laufen bringen

1. Welches Betriebssystem verwenden Sie?

Mac oder Linux?

Es ist möglich.

Windows?

Wahrscheinlich nicht. Um xhprof unter Windows ausführen zu können, muss eine kompilierte DLL vorhanden sein. Es gibt einen Link zu einem in diesem Thread , aber ich hatte immer Kompatibilitätsprobleme damit, als ich versuchte, es auf XAMPP zu verwenden.

Ich denke, es wurde mit einer anderen Version von Apache kompiliert.

2. Unter Ubuntu zum Laufen bringen

Auf dem Mac ist das möglich. Hier sind zwei nützliche Links:

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-Working-Well

Aber ich habe es nicht getan. Ich habe es geschafft, es auf Ubuntu Server 13.04 zum Laufen zu bringen, obwohl ich denke, dass jede neuere Version von Ubuntu Server funktionieren würde.

Ich richte meinen Server auf VirtualBox ein. VirtualBox ist kostenlos, aber es kann etwas dauern, bis Sie wissen, wie es eingerichtet wird.

3.Installation von XHProf

Ich gehe davon aus, dass wir einen voll funktionsfähigen Ubuntu-Server haben.

Zuerst müssen wir Birne installieren. Wir werden dies verwenden, um XHProf zu installieren.

sudo apt-get install pear

Wir folgen dem mit phpdev, das auch benötigt wird.

sudo apt-get install php5-dev

Wenn diese Befehle nicht funktionieren und ich sie falsch verstanden habe, fahren Sie einfach fort mit:

sudo pecl install -f xhprof

Ubuntu wird Ihnen mitteilen, was Sie vermissen und Ihnen die Aufforderung geben, es zu installieren. Sobald Sie alle Abhängigkeiten haben, installieren Sie xhprof.

Möglicherweise tritt bei der Installation von xhprof ein Fehler auf. Es wird versucht, die Betaversion herunterzuladen, und die Installation schlägt fehl. In diesem Fall versuchen Sie:

sudo pecl install -f xhprof-beta

Hoffentlich ist jetzt xhprof installiert.

Jetzt müssen wir es konfigurieren. Öffnen Sie Ihre php.ini unter /etc/php5/apache2/php.ini und fügen Sie die folgenden zwei Zeilen unter den Erweiterungen hinzu:

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

Die zweite Zeile legt das Ausgabeverzeichnis fest. Wenn dieser Ordner nicht existiert, müssen Sie ihn erstellen. Wenn Sie dies getan haben, starten Sie Apache mit

sudo service apache2 restart

4. Überprüfen Sie, ob XHProf ausgeführt wird

Jetzt müssen wir überprüfen, ob das funktioniert hat.

Test 1:

Eingeben php -m

Wenn Sie xhprof in der Liste sehen, können Sie loslegen. Wenn nicht, machen Sie sich keine Sorgen, versuchen Sie stattdessen Folgendes, um zu überprüfen, ob es funktioniert:

Gehen Sie zu Ihrer Webroot /var/www/und erstellen Sie eine PHP-Datei mit nur:

phpinfo();

Speichern Sie es als phpinfo.php. Öffnen Sie dies in Ihrem Browser und Sie sollten PHP-Informationen sehen. Suchen Sie nach xhprof, und wenn Sie dies sehen, wird es ausgeführt.

Bildbeschreibung hier eingeben

5. Es mit Drupal zum Laufen bringen

Ich konnte es mit dem Drupal-Modul nicht zum Laufen bringen. Stattdessen erkläre ich Ihnen, wie Sie es mit dem Entwicklungsmodul zum Laufen bringen.

Zuerst eine Konfiguration, die ich hier ausgeliehen habe . Ich bin diesem Teil nicht wirklich gefolgt, aber es funktioniert so gut, Pferd und so.

Erstellen Sie eine neue Konfigurationsdatei mit dem folgenden Befehl:

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

und geben Sie den folgenden Code ein.

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

Dann müssen wir möglicherweise einen Symlink zu unserem Ordner xhprof_html erstellen. Stellen Sie also für den Fall Folgendes ein:

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

Dadurch wird in Ihrem Webroot ein Ordner erstellt, der auf die vorhandene xhprof-Datei verweist. Dann können Sie in Ihrem Browser http://mywebsitehere.com/xhprof öffnen , um alle von Ihnen durchgeführten Läufe anzuzeigen.

Dann starte Apache neu. Jetzt ist es Zeit für eine kleine Entwicklungskonfiguration. Gehe zu den Entwicklereinstellungen, aktiviere xhprof und setze:

xhprof directory = /usr/share/php

XHProf URL = /xhprof_html

Nun sollte am Ende jeder Seite ein kleiner Link zu xhprof zu sehen sein.

Bildbeschreibung hier eingeben

Wenn Sie darauf klicken, sollten Sie zu einer Seite gelangen, die so aussieht. Sie sind fertig. Herzliche Glückwünsche!

Bildbeschreibung hier eingeben

Wenn das nicht funktioniert hat und Sie Lauffehler bekommen, liegt das wahrscheinlich daran, dass Drupal nicht berechtigt ist, in den zuvor festgelegten tmp-Ordner zu schreiben. Geben Sie also Folgendes ein:

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

Und hoffentlich klappt das. Wir sind fertig. Hoorah!

Es sei denn, Sie möchten Grafikfunktionen. Zum Glück ist das so einfach wie:

sudo apt-get install graphviz
sudo service apache2 restart

Und jetzt sollten Sie Grafikfunktionen haben. Hoffentlich hilft das!

Dominic Woodman
quelle
Wow, beeindruckende Antwort. Für das, was es wert ist, scheinen die Berechtigungen, die Sie verwendet haben, vernünftig zu sein.
Letharion
Ja, es gab einige ernsthafte Schmerzen, die das zum Laufen brachten. Hoffentlich hilft es jemand anderem (und mir in zwei Monaten, wenn ich es vergessen habe).
Dominic Woodman
Tolle Antwort, funktioniert perfekt, danke, um die Schmerzen zu lindern :-)
JürgenR
Ich habe kein /etc/apache2/conf.dVerzeichnis. Ich machte sudo nano /etc/apache2/conf-enabled/xhprof.confund a2enconf xhprofstattdessen
milkovsky
Danke für den Durchlauf. Unter Ubuntu 14.04 installierte ich von den Ubuntu-Repositorys anstatt von PEAR und stellte fest, dass ich ausführen musste php5enmod xhprof, um den Prioritätssymlink vom Verzeichnis conf.d in das für Mods verfügbare Verzeichnis xhprof.ini zu erstellen. Eine andere Möglichkeit, um zu überprüfen, ob xhprof aktiviert ist, besteht darin php5-fpm -i | grep xhprof, php5-fpm durch die von Ihnen überprüfte SAPI zu ersetzen.
mesch