J'essaie d'avoir accès à rename_function
en PHP, et pour cela j'ai besoin de PECL APD. J'utilise Ubuntu 14.04 LTS.
J'essaie de lancer Sudo pecl install apd
, mais j'obtiens:
téléchargement de apd-1.0.1.tgz ... Démarrage du téléchargement de apd-1.0.1.tgz (36,643 octets) .......... done: 36 643 octets 15 fichiers sources, générant en cours d'exécution: phpize Impossible de trouver config.m4. Assurez-vous que vous exécutez/usr/bin/phpize 'dans le répertoire source de niveau supérieur de le module Si la commande échouait avec' phpize: not found ', vous devez installer le paquet php5-dev. Vous pouvez le faire en lançant 'apt-get install php5-dev' en tant qu'utilisateur root ERROR: `phpize 'a échoué
Devrais-je exécuter cette commande à partir d'un certain répertoire?
Cette fois, j'ai essayé avec les options verbeuses activées, au cas où il y aurait un indice dans les journaux:
Sudo/usr/bin/pecl -vvvvvv install apd
Avertissement: file_exists (): Impossible de trouver le wrapper "channel" - avez-vous oublié de l'activer lors de la configuration de PHP? dans PEAR/Downloader/Package.php à la ligne 1518 Avertissement: is_file (): Impossible de trouver le "canal" du wrapper - avez-vous oublié de l'activer lors de la configuration de PHP? dans PEAR/Downloader/Package.php à la ligne 1528 Avertissement: is_file (): Impossible de trouver le "canal" du wrapper - avez-vous oublié de l'activer lors de la configuration de PHP? dans PEAR/Downloader/Package.php à la ligne 1528 Téléchargement "http://pecl.php.net/get/apd-1.0.1.tgz" downloading apd-1.0.1. tgz ... Démarrage du téléchargement de apd-1.0.1.tgz (36,643 octets) .......... done: 36,643 octets + cp/tmp/pear/temp/tmpNUpEpz/apd-1.0.1/LICENCE /usr/share/php/doc/apd/.tmpLICENSE[.____.¹.addition à la transaction: chmod 664/usr/share/php/doc/apd/.tmpLICENSE ajout à la transaction: renommez /usr/share/php/doc/apd/.tmpLICENSE /usr/share/php/dp/apd/LICENSE[.____. dépendance à la transaction: installed_as LICENSE/usr/share/php/doc/apd/LICENCE/usr/share/php/doc /apd + cp /tmp/pear/temp/tmpNUpEpz/apd-1.0.1/README/usr/share/php/doc/apd/.tmpREADME ajout à la transaction: chmod 664 /usr/share/php/doc/apd/.tmpREADME adding à la transaction: renommer/usr/share/php/doc/apd /.tmpREADME /usr/share/php/doc/apd/README adding à la transaction: installed_as README/usr/share/php/doc/apd/README/usr/share/php/doc /apd + cp/tmp/pois r/temp/tmpNUpEpz/apd-1.0.1/pprofp /usr/bin/.tmppprofp[.____.hner+ chmod + x /usr/bin/.tmppprofp[.____.¹additionner à la transaction: chmod 775/usr/bin/.tmppprofp en ajoutant à la transaction: renommez /usr/bin/.tmppprofp /usr/bin/pprofp adding à la transaction: installed_as pprofp/usr/bin/pprofp/usr/bin/ + cp /tmp/pear/temp/tmpNUpEpz/apd-1.0.1/pprof2calltree /usr/bin/.tmppprof2calltree[.____.hner+ chmod + x /usr/bin/.tmppprof2calltree ajout à la transaction: chmod 775 /usr/bin/.tmppprof2calltree adding à la transaction: renommer /usr/bin/.tmppprof2calltree /usr/bin/pprof2calltree[.____.TERNadding à la transaction: installed_as pprof2calltree/usr/bin/pprof2calltree/usr/bin / 15 fichiers sources, bâtiment en cours de construction dans /tmp/pear/temp/pearf7LGca running: phpize Impossible de trouver config. m4. Assurez-vous que vous exécutez '/ usr/bin/phpize' dans le répertoire source de niveau supérieur du module Si la commande a échoué avec 'phpize: not found' alors vous devez installer l Paquet php5-devVous pouvez le faire en lançant 'apt-get install php5-dev' en tant qu'utilisateur racine après 12 opérations de fichiers + rm /usr/share/php/doc/apd/.tmpLICENSE + rm /usr/share/php/doc/apd/.tmpREADME[.____. 311++ rm /usr/bin/.tmppprofp + rm /usr/bin/.tmppprof2calltree ERREUR: échec de phpize Avertissement: unlink (/ tmp/glibctestRdKE0K): Aucun fichier ou répertoire de ce type dans System.php à la ligne 214 Avertissement: unlink (/ tmp/pear/temp/pearf7LGca): aucun fichier ou répertoire de ce type dans System.php à la ligne 214
Ceci sera un bref résumé de tout ce qui est nécessaire pour utiliser APD en tant que profileur PHP. J'espère que cela répondra à vos besoins. Ce résumé s’applique à PHP 5.6.2 APD 1.0.1 et peut être incorrect pour d’autres versions.
Tout d’abord, ne le démarrez pas si vous ne vous êtes pas assuré de ces deux choses:
--enable-debug
)Si vous avez une configuration PEAR fonctionnelle, vous devez configurer APD comme dans this article. N'oubliez pas d'essayer les packages de distribution non plus. Sinon, APD construit comme suit:
<Apache root>/bin/phpsize
./configure
(ajoutez --with-php-config=<Apache root>/bin/php-config
si la configuration échoue.)fabrique fabrique installe
zend_extension =/apd.so apd.statement = 1 apd.tracedir =/tmp/apd-traces
Vous devez maintenant redémarrer Apache, mais avant cela, vérifiez que l'extension APD fonctionne correctement. Pour faire simplement courir PHP
/bin/php
Aucun avertissement ne doit être donné si l'extension est chargée correctement. Si vous obtenez un message d'erreur, quelque chose comme l'extension "apd.so" ne peut pas être chargée, il y a un problème. Vérifiez si vous avez compilé avec la version correcte d'Apache/PHP et si vous utilisez la même chose maintenant.
Si PHP ne se plaint de rien, entrez:
<?php phpinfo(); ?>
et vérifiez quelques lignes sur APD. Si vous les trouvez, vous avez terminé.
Vous aurez également besoin de traces pour pouvoir commencer à suivre votre Apache afin de permettre au module PHP de charger APD. Ensuite, vous devrez identifier le script à suivre. Ajoutez l'appel APD en haut du script:
apd_set_pprof_trace();
Ensuite, faites quelques demandes et supprimez à nouveau l'instruction pour éviter de causer davantage de tort. Maintenant, jetez un coup d'œil au répertoire de trace. Vous devriez trouver les fichiers avec un schéma de nommage de pprof[0-9]*.[0-9]
ici. Décodez-les à l'aide de l'outil pprofp
à partir de votre archive source APD. Exemple:
/bin/php/pprofp -u
Rediriger stdout si nécessaire. Utilisez -t au lieu de -u (sortie récapitulative) pour obtenir des arbres d’appel. Lorsque vous créez des traces avec -t, vous obtenez également une sortie récapitulative, mais elle ne contient pas les durées par appel. Je suggère de toujours créer à la fois un arbre d’appel et une trace récapitulative.
J'espère que cela aide, Je vous recommande peine de lire le lien mentionné ci-dessus .
La commande phpize est destinée à être exécutée au plus haut niveau d'un répertoire source d'extension (ce répertoire source doit contenir un nom de fichier config.m4). Voir this pour plus d'informations.
Comme par erreur:
Si la commande a échoué avec
phpize: not found
, vous devez installer le paquet php5-dev.Vous pouvez le faire en exécutant
apt-get install php5-dev
en tant qu'utilisateur root
Je pense que vous devriez installer le développement de module pour PHP via:
Sudo apt-get install php5-dev
Cela devrait vous fournir le binaire phpize
nécessaire à la compilation des sources d’extension Pecl. Et assurez-vous que cela est dans votre PATH
.