Installer et configurer XHProf (Ubuntu)

19

Problème

J'essaie d'utiliser XHProf mais je reçois une horrible erreur php à chaque fois qu'il s'exécute.

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

Le problème est résolu ici car le dossier temporaire n'existe pas, contrairement au mien.

Configuration côté serveur

J'utilise un nouveau serveur Ubuntu 13.04 avec Drupal 7.

Installez xhprof en pearsuivant les instructions ici . J'ai également ajouté un répertoire temporaire à php.ini, que j'ai créé manuellement.

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

Configuration Drupal

J'ai à la fois le devel installé et j'ai également installé le module XHProf.

Dans admin/config/development/xhprof, j'ai activé le profilage de toutes les pages vues et des demandes drush.

En suivant un lien xhprof, j'obtiens l'erreur ci-dessus.

entrez la description de l'image ici

Dominic Woodman
la source

Réponses:

35

Bon dieu Batman. C'était incroyablement frustrant. Voici un guide pour faire fonctionner xhprof. (Remarque: je suis très nouveau sur Linux. Je ne sais pas si les autorisations que j'utilise sont sûres, ou s'il existe une meilleure façon de le faire. Je ne ferais cela que dans un environnement de test.)

IMPORTANT: Il ne vous dira rien sur la façon de l'interpréter. Je ne sais pas comment faire, je suis juste content que ça marche.

Faire fonctionner XHProf

1. Quel système d'exploitation utilisez-vous?

Mac ou Linux?

C'est possible.

Les fenêtres?

Probablement pas. Pour exécuter xhprof sur Windows, vous devez avoir une DLL compilée. Il y a un lien vers un dans ce fil , mais j'ai toujours eu des problèmes de compatibilité avec lui lorsque j'ai essayé de l'utiliser sur XAMPP.

Je pense qu'il a été compilé avec une version différente d'Apache.

2. Faire fonctionner Ubuntu

C'est possible sur Mac. Voici deux liens utiles:

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

Mais je ne l'ai pas fait. J'ai réussi à le faire fonctionner sur Ubuntu Server 13.04, bien que je pense que n'importe quelle version récente d'Ubuntu Server fonctionnerait.

J'ai installé mon serveur sur VirtualBox. VirtualBox est gratuit mais cela peut prendre un peu de temps pour apprendre à le configurer.

3.Installation de XHProf

Je vais supposer que nous avons un serveur Ubuntu pleinement fonctionnel.

Nous devons d'abord installer la poire. Nous l'utiliserons pour installer XHProf.

sudo apt-get install pear

Nous suivons cela avec phpdev qui est également nécessaire.

sudo apt-get install php5-dev

Si ces commandes ne fonctionnent pas et que je me trompe, continuez tout de suite avec:

sudo pecl install -f xhprof

Ubuntu vous dira ce qui vous manque et vous demandera de l'installer. Une fois que vous avez toutes les dépendances, installez xhprof.

Vous pourriez obtenir une erreur lors de l'installation de xhprof, il essaiera de télécharger la version bêta et échouera. Dans ce cas, essayez:

sudo pecl install -f xhprof-beta

Espérons que xhprof soit maintenant installé.

Maintenant, nous devons le configurer. Ouvrez votre php.ini qui se trouve sur /etc/php5/apache2/php.ini et ajoutez les deux lignes suivantes sous la section extensions:

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

La deuxième ligne définit le répertoire de sortie. Si ce dossier n'existe pas, vous devrez le créer. Une fois le redémarrage effectué, apache

sudo service apache2 restart

4. Vérifier si XHProf est en cours d'exécution

Maintenant, nous devons vérifier si cela a fonctionné.

Test 1:

Entrer php -m

Si vous voyez xhprof dans la liste, vous êtes prêt à partir. Sinon, ne vous inquiétez pas, essayez plutôt de vérifier si cela fonctionne:

Accédez à votre racine Web /var/www/et créez un fichier php avec uniquement:

phpinfo();

Enregistrez-le sous phpinfo.php. Ouvrez-le dans votre navigateur et vous devriez voir des informations PHP. Recherchez xhprof et si vous voyez cela, alors il fonctionne.

entrez la description de l'image ici

5. Faire fonctionner Drupal

Je ne pouvais pas le faire fonctionner avec le module Drupal. Au lieu de cela, je vais vous dire comment le faire fonctionner avec le module de développement.

D'abord une config que j'ai empruntée d' ici . Je n'ai pas vraiment suivi cette partie, mais ça marche donc cadeau cheval et tout ça.

Créez un nouveau fichier de configuration avec la commande suivante:

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

et insérez le code suivant.

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

Ensuite, nous devons éventuellement créer un lien symbolique vers notre dossier xhprof_html. Donc, au cas où définir ceci:

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

Cela va créer un dossier dans votre racine Web qui pointe vers le fichier xhprof existant. Ensuite, dans votre navigateur, vous pouvez ouvrir http://mywebsitehere.com/xhprof pour voir toutes les exécutions que vous avez effectuées.

Redémarrez ensuite apache. Il est maintenant temps pour une petite configuration. Accédez aux paramètres de développement, activez xhprof et définissez:

xhprof directory = /usr/share/php

XHProf URL = /xhprof_html

Maintenant, au bas de chaque page, vous devriez voir un petit lien vers xhprof.

entrez la description de l'image ici

Et cliquer dessus devrait vous amener à une page qui ressemble à ceci. Vous avez terminé. Toutes nos félicitations!

entrez la description de l'image ici

Si cela n'a pas fonctionné et que vous obtenez des erreurs d'exécution, c'est probablement parce que Drupal n'a pas la permission d'écrire dans le dossier tmp que nous avons défini plus tôt, entrez donc:

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

Et j'espère que cela fonctionne. Avaient fini. Hoorah!

A moins que vous ne vouliez des fonctions graphiques. Heureusement, c'est aussi simple que:

sudo apt-get install graphviz
sudo service apache2 restart

Et maintenant, vous devriez avoir des fonctions graphiques. J'espère que cela aide!

Dominic Woodman
la source
Wow, réponse impressionnante. Pour ce que ça vaut, les autorisations que vous avez utilisées semblent saines.
Letharion
Oui, il y avait une grande douleur pour que ça marche. J'espère que cela aidera quelqu'un d'autre (et moi dans deux mois quand j'aurai oublié).
Dominic Woodman
Excellente réponse, fonctionne parfaitement, merci pour soulager la douleur :-)
JurgenR
Je n'ai pas d' /etc/apache2/conf.dannuaire. J'ai fait sudo nano /etc/apache2/conf-enabled/xhprof.confet à la a2enconf xhprofplace
milkovsky
Merci pour le passage. Sur Ubuntu 14.04, j'ai installé à partir des référentiels Ubuntu plutôt que de PEAR, et j'ai constaté que je devais exécuter php5enmod xhprofafin de créer le lien symbolique prioritaire du répertoire conf.d vers le fichier xhprof.ini du répertoire mods-available. Une autre façon de vérifier si xhprof est activé consiste à exécuter php5-fpm -i | grep xhprof, en remplaçant php5-fpm par le SAPI que vous vérifiez.
mesch