PHP produit une page entièrement blanche, sans erreurs, journaux ou en-têtes.
Lors de l'exécution de certains de code PHP sur mon WAMP PC je suis tout d'un coup se vide de réponse du serveur - pas de réponse en fait. Aucun en-tête, pas de données, rien dans les logs d'erreur PHP, nada. J'ai redémarré APACHE et PHP, mais toujours rien. Je sais que php fonctionne car je peux accéder à d'autres scripts PHP tout simplement parfait.
Firebug ne rapporte pas d'en-têtes, ? octets, et il ne faut 163ms pour "charger" (il n'est donc pas un délai d'attente). J'ai pensé à de la mémoire rapide de la consommation - mais j'ai surveillé mon PC en mémoire et il n'est pas en montrant des pics. Des erreurs et des Exceptions ont été fonctionne bien jusqu'à maintenant.
Ce qui dans le monde?
max_execution_time = 30 ;
max_input_time = 60 ;
max_input_nesting_level = 64 ;
memory_limit = 500M ;
error_reporting = E_ALL | E_NOTICE | E_STRICT
display_errors = On
log_errors = On
:EDIT:
Je ne voudrais pas toucher @
avec une dizaine de pieds de poteau. Je pense que le ruby gars jeter ce qu'il y à donc les programmeurs chute de PHP.
De toute façon, j'ai activé l'extension xdebug et il n'a pas de sortie du tout broyer des fichiers. Ensuite, j'ai pris zombat conseils et placé un DIE() en haut de la page et ça a fonctionné. Je suppose que j'ai juste quelques très bizarre code totalement tue PHP. Même si des erreurs ont été désactivé ou supprimé avec @
je doit encore être se remettre un en-tête à partir du serveur avec le vide de contenu!
Si je trouve plus je vais poster dos.
source d'informationauteur Xeoncross
Vous devez vous connecter pour publier un commentaire.
L'exécution de la page à partir d'une console et vous obtiendrez le message d'erreur.
Vous pourriez avoir un .htaccess dans ce répertoire qui a modifié les rapports d'erreurs.
Pour tester, essayez de définir explicitement ces options en haut de votre script php qui vous donnera ennuis.
J'ai également vu que cela est causé par trop zélé anti-virus. Certains contiennent de proxy web logiciel pour filtrer internet et le courrier électronique. Dans ce cas, la page serait juste continuer à charger dans l'infini, mais ne jamais se terminer.
Méfiez-vous de la @ (suppression d'erreur) de l'opérateur, si vous avez une erreur de syntaxe sur une ligne avec @ PHP en silence à la sortie.
Pour détecter cette condition, l'utilisation set_error_handler et écrire votre propre gestionnaire d'erreur, vous aurez toujours appelé pour les erreurs où @ est utilisé.
Vous dire d'autres scripts PHP sont de travail, ainsi que l'indique ce n'est probablement pas un Apache problème. Vous aussi, tous vos paramètres de journalisation correct, et rien n'est arriver connecté, il est donc tout à fait possible de PHP est sortie normalement avant qu'il ne sort rien. L'une des opérations suivantes est peut-être vrai:
exit()
déclaration? Vous avez été à travailler sur le code, peut-être que vous avez ajouté un rapideexit()
pour vérifier quelque chose, et j'ai oublié de l'enlever?@
opérateur, qui supprime tous les messages d'erreur, m'a coûté heures de temps de débogage dans le passé. Certainement quelque chose à chercher.Dans des situations de ce genre, le pauvre homme de débogage de l'approche peut donner des résultats rapides. Jetez un
exit('wtf');
dans la première ligne dans le script en question ici. Ne fait que courir? Les résultats de l'essai immédiatement les règles de toutes sortes de possibilités quel que soit le résultat. Si vous n'obtenez pas une sortie, alors il est probablement au niveau du serveur (problème de configuration, module incorrect, etc), bien faire attention plus haut niveau de mise en mémoire tampon. Si vous n'obtenez pas de sortie, alors vous savez que le serveur est très bien, et le problème est plus profond dans votre script, dans ce cas, vous pouvez déplacer leexit()
appeler quelques lignes, rincer et répéter. Pas une manière élégante de débogage, mais c'est rapide et sale, et vous trouverez probablement la question dans un couple de minutes.Vérifier php.paramètre ini pour short_open_tag = ou short_open_tag = Off
Le plus probable c'est qu'apache est de s'écraser. Regardez à travers le journal des erreurs d'apache peut-être, ou attacher un débogueur.
De détails sur la recherche de débogage apache/php processus sur windows peut être trouvé à http://bugs.php.net/bugs-generating-backtrace-win32.php
J'ai deviné la réponse à ce problème - il s'avère que PHP 5.2.5 ne peut pas gérer un appel récursif à la mort.
Pas d'en-têtes, des erreurs, du contenu, des journaux, xdebug décharges, la mémoire, les pointes, les pics de l'UC, le serveur tombe en panne, ou quoi que ce soit. Après environ 150ms PHP juste "se termine". Bizarre.
Pour activer l'affichage des erreurs dans votre code PHP dans le cas où vous ne voyez rien, insérer
Exemple où cette potentiellement vous permet d'économiser beaucoup de temps:
Ce code dans un site joomla default.php fichier de modèle affiche une page blanche sans erreur msg sans lignes 20 et 21
De sortie:
vérifiez le Journal des Événements.
Lorsque cela se produit, il est généralement utile de couper le plus possible du code et de voir si vous pouvez obtenir quelque chose sur la page à afficher.
Elle pourrait être due à une unclosed citation quelque part dans votre code, ou un unclosed corset. Cela pourrait provoquer l'écho de l'instruction considérée comme du texte ou dans une autre fonction, etc.
Et, tandis que toutes les erreurs DOIVENT être signalées, j'ai constaté que toutes les erreurs sont effectivement déclarées, probablement en raison de paramètres ini sur un ordinateur hôte partagé qui est hors de ma portée.
Commenter n'est pas toujours assez - non bien sûr, pourquoi pas. Lorsque cela se produit, habituellement, je trouve que c'est plus rapide qu'à copier la page, et, lentement, couper et coller des sections arrière jusqu'à ce que j'ai trouver l'erreur, après quoi je peux me lancer pour une bête faute de frappe.
avez-vous vérifier vos fichiers de clôture
?>
tags? Ou, plus important d'espaces...