J'aimerais déboguer du code PHP, mais je suppose que l'impression d'un journal à l'écran ou à un fichier me convient.
Comment imprimer un journal en code PHP?
L'habituel print
/ printf
semble aller à la sortie HTML et non à la console.
J'ai un serveur Apache exécutant le code PHP.
printf
question obtiendrait ce nombre upvotes ...Réponses:
Une astuce moins connue est que mod_php mappe stderr au journal Apache. Et, il y a un flux pour cela, donc
file_put_contents('php://stderr', print_r($foo, TRUE))
va bien vider la valeur de$foo
dans le journal des erreurs Apache.la source
var_export($foo, true)
au lieu deprint_r($foo, true)
ifprint_r
ne vous donne pas les informations de type dont vous avez besoin.pourrait être utile
la source
Vous pouvez utiliser error_log pour envoyer à vos serveurs le fichier journal des erreurs (ou un autre fichier facultatif si vous le souhaitez)
la source
Si vous êtes sous Linux:
ou
puis en console
Cela montrera en continu la dernière ligne mise dans le fichier.
la source
Vous devez changer votre état d'esprit. Vous écrivez PHP, pas tout ce que vous avez l'habitude d'écrire. Le débogage en PHP ne se fait pas dans un environnement console.
En PHP, vous disposez de 3 catégories de solutions de débogage:
Apprenez à les utiliser au lieu d'essayer de faire en sorte que PHP se comporte comme n'importe quel autre langage auquel vous êtes habitué.
la source
Êtes-vous en train de déboguer sur la console? Il existe différentes options pour déboguer PHP. La fonction la plus couramment utilisée pour le débogage rapide et sale est var_dump .
Cela étant dit et à l'écart, bien que var_dump soit génial et que beaucoup de gens font tout avec juste cela, il existe d'autres outils et techniques qui peuvent pimenter un peu les choses.
Pour vous aider en cas de débogage dans une page Web, enveloppez des
<pre> </pre>
balises autour de votre instruction de vidage pour vous donner une mise en forme appropriée sur les tableaux et les objets.C'est à dire:
Enfin, assurez-vous que le débogage de votre gestion des erreurs est configuré pour afficher les erreurs. L'ajout de ceci en haut de votre script peut être nécessaire si vous ne pouvez pas accéder à la configuration du serveur pour ce faire.
Bonne chance!
la source
Si vous ne souhaitez pas intégrer un framework comme Zend , vous pouvez utiliser la méthode trigger_error pour vous connecter au journal des erreurs php.
la source
Simplement, c'est trigger_error:
mais vous ne pouvez pas mettre de tableaux ou d'objets donc utilisez
la source
Vous pouvez également écrire dans un fichier comme celui-ci:
Assurez-vous que les autorisations appropriées sont définies pour que php puisse accéder et écrire dans le fichier (
775
).la source
Vous pouvez utiliser le module php curl pour passer des appels vers http://liveoutput.com/ . Cela fonctionne très bien dans un environnement d'entreprise sécurisé où certaines restrictions dans le php.ini existent qui restreignent l'utilisation de
file_put_contents
.la source
C'est un excellent outil pour le débogage et la journalisation php: PHp Debugger & Logger
Cela fonctionne dès la sortie de la boîte avec seulement 3 lignes de code. Il peut envoyer des messages à la console js pour le débogage ajax et peut remplacer le gestionnaire d'erreurs. Il vide également des informations sur des variables comme var_dump () et print_r (), mais dans un format plus lisible. Très bel outil!
la source
J'en ai utilisé beaucoup, mais comme j'ai généralement besoin de déboguer lors du développement, et depuis que je développe sur localhost, j'ai suivi les conseils des autres et j'écris maintenant dans la console de débogage JavaScript du navigateur (voir http: //www.codeforest. net / debugging-php-dans-navigateurs-javascript-console ).
Cela signifie que je peux regarder la page Web que mon PHP génère dans mon navigateur et appuyer sur F12 pour afficher / masquer rapidement toute trace de débogage.
Comme je suis constamment à la recherche des outils de développement pour le débogueur, la mise en page CSS, etc., il est logique de regarder ma connexion PHP là-bas.
Si quelqu'un décide de nous ce code, j'ai fait un changement mineur. Après
function debug($name, $var = null, $type = LOG) {
J'ai ajouté
$name = 'PHP: ' . $name;
C'est parce que mon serveur PHP génère du code HTML contenant du JavaScript et je trouve utile de faire la distinction entre la sortie de PHP et JS.
(Remarque: je mets actuellement à jour ceci pour me permettre d'activer et de désactiver différents types de sortie: depuis PHP, depuis JS et l'accès à la base de données)
la source
J'utilise cakephp donc j'utilise:
la source
Vous pouvez utiliser:
la source
Vous pouvez utiliser
ou si vous souhaitez imprimer cette déclaration dans un journal, vous pouvez utiliser
la source