2010-09-29 4 views
10

J'ai PHP 5.2.10 et PHP 5.2.14 (build x32 non-threadsafe Win32) installé sur un serveur Windows 2008 R2 et sur Windows 7 64 bits.Pourquoi PHP 5.2.14 ne va-t-il afficher aucune erreur (même depuis la ligne de commande)?

Pour une raison quelconque, PHP 5.2.14 refuse d'afficher les messages d'erreur.

Même quand je configurer les paramètres suivants dans php.ini Je ne suis pas d'une erreur, si j'utilise 5.2.14:

error_reporting = E_ALL 
display_errors = On 

Cela se produit même lors de l'exécution d'un script de test à partir de la ligne de commande à l'aide php.exe avec une erreur de syntaxe délibérée:

c:\php>php test.php

PHP utilise le fichier php.ini correct parce que je peux voir mes paramètres changent quand je lance php.exe -i.

Je remarque également que php.exe dans PHP 5.2.14 est très lent à démarrer.

Lorsque j'effectue le même ensemble de tests en utilisant PHP 5.2.10 sur les mêmes machines, je reçois très bien les messages d'erreur.

Les deux fichiers sont stockés php.ini (basé sur de php.ini-recommended) mais avec les error_reporting et display_errors paramètres modifiés.

Répondre

5

Vous pourriez avoir à activer display_startup_errors ainsi:

display_startup_errors boolean 

Even when display_errors is on, errors that occur during PHP's startup sequence are not displayed. It's strongly recommended to keep display_startup_errors off, except for debugging.

Vous pouvez également essayer de peluches le fichier avec c:\php>php -l test.php pour tester les erreurs de syntaxe.

+0

vous apprenez quelque chose de nouveau chaque jour. Il s'avère que PHP n'a pas pu charger l'extension SQLite3 car l'extension pdo.dll (qui dépend de cela) n'était pas décommentée. Avec 'display_startup_errors' réglé sur off, cela a semblé provoquer des erreurs d'analyse. Merci beaucoup. – Kev

+0

En fait ... enquêter plus loin. Quelqu'un a placé des guillemets autour de la valeur des drapeaux 'error_reporting'. C'est la vraie cause. c'est-à-dire -error_reporting = "E_ALL & ~ E_NOTICE" '. – Kev

3

dernièrement, j'ai dû travailler sur le projet de quelqu'un d'autre ... N'étant pas capable de déboguer, je n'avais pas d'autre choix que de vérifier ceci: "error_reporting (0);"

Donc, vérifiez votre code source. Recherchez quelque chose comme ceci: "error_reporting (0);". Une fois que vous l'avez trouvé, commentez-le !!!

Normalement, vous ne devez pas mettre cela dans le code source, mais dans le fichier php.ini.

@ +

+0

Mieux encore, ajoutez un moyen de l'éteindre pendant (et seulement pendant) le développement. Ces messages d'erreur peuvent révéler aux pirates potentiels ce que vous pensez de votre serveur. – EpicVoyage

8

Je suis en cours d'exécution d'un PHP plus tard (5.4.24), mais ces réponses manquent de -d option I found exemplified elsewhere qui fait des erreurs d'affichage PHP d'analyse syntaxique intelligible lors de l'exécution de la cli:

php -d display_errors test.php 

C'est la meilleure réponse à la question que je cherchais. Exécution de l'linter avec -l ne vous dit « erreurs d'analyse syntaxique fichier foo.php »

+2

Je l'utilise comme alias 'alias phprun =" php -d display_errors "' –

11

J'ai trouvé ce vraiment ennuyeux, donc voici une stratégie pour vérifier la syntaxe de CLI:

  1. Ne pas charger le fichier ini .
  2. Activez explicitement display_errors et display_startup_errors.

php -n -l -d display_errors -d display_startup_errors path/to/your/phpfile.php

$ php -h 
-n    No php.ini file will be used 
-l    lint, syntax checking only 
-d foo[=bar]  Define INI entry foo with value 'bar' 
+0

il y a une petite faute de frappe dans le drapeau display_errors, bien que ce soit la meilleure réponse – ROLO

Questions connexes