Donc, je n'ai pas vraiment d'erreurs dans ma page Web actuelle, mais je veux pouvoir voir une erreur quand elles apparaissent, au lieu de la page d'erreur HTTP 500. J'ai un peu cherché sur Google et j'ai pensé que l'ajout de ces deux lignes réglerait tout.
ini_set('display_errors', 'On');
error_reporting(E_ALL);
NOTE: Je n'ai pas accès au fichier php.ini, car j'utilise le serveur de mon compte scolaire.
J'ai donc introduit un bogue (pas de point-virgule après $ buggy) comme en haut de ma page:
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
$buggy
$x = 4 + 2;
...
Cependant, je viens de recevoir une erreur de serveur:
"Le site Web a rencontré une erreur lors de la récupération de http://mywebpage.com/ . Il est peut-être en panne pour maintenance ou configuré de manière incorrecte."
Des idées?
MODIFIER:
J'ai reconfiguré mon code:
<?php
include_once 'database/errorSettings.php';
?>
<?php
$buggy // whoops
$x = 4 + 2;
...
errorSettings.php est le suivant:
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
?>
Mais cela ne fonctionne toujours pas ... mauvaise façon de reconfigurer?
Ce que vous avez est une erreur d'analyse. Ceux-ci sont lancés avant que tout code soit exécuté. Un fichier PHP doit être analysé dans son intégralité avant que son code ne puisse être exécuté. S'il y a une erreur d'analyse dans le fichier où vous définissez vos niveaux d'erreur, ils n'auront pas pris effet au moment où l'erreur est renvoyée.
Soit divisez vos fichiers en parties plus petites, comme définir les niveaux d'erreur dans un fichier, puis include
s un autre fichier contenant le code (et les erreurs), ou définissez les niveaux d'erreur en dehors de PHP à l'aide de php.ini ou .htaccess. directives.
Vous devez définir la valeur error_reporting dans un fichier .htaccess. Comme il y a une erreur d'analyse, il n'exécute jamais la fonction error_reporting () dans votre code PHP.
Essayez ceci dans un fichier .htaccess (en supposant que vous puissiez en utiliser un):
php_flag display_errors 1
php_value error_reporting 30719
Je pense que 30719 correspond à E_ALL mais je peux me tromper.
Edit Update:http://php.net/manual/en/errorfunc.constants.php
int error_reporting ([ int $level ] )
---
32767 E_ALL (integer)
All errors and warnings, as supported, except of level E_STRICT prior to PHP 5.4.0. 32767 in PHP 5.4.x, 30719 in PHP 5.3.x, 6143 in PHP 5.2.x, 2047 previously
Ajoutant à ce que deceze dit ci-dessus. Il s’agit d’une erreur d’analyse. Par conséquent, pour déboguer une erreur d’analyse, créez un nouveau fichier dans la racine nommé debugSyntax.php. Mettez ceci dedans:
<?php
/////// SYNTAX ERROR CHECK ////////////
error_reporting(E_ALL);
ini_set('display_errors','On');
//replace "pageToTest.php" with the file path that you want to test.
include('pageToTest.php');
?>
Exécutez la page debugSyntax.php et il affichera les erreurs d’analyse de la page que vous avez choisi de tester.
Écrivez simplement le code suivant sur le fichier PHP:
ini_set('display_errors','on');
Pour les personnes utilisant Codeigniter (je suis sur C3):
Le fichier index.php remplace la configuration de php.ini, ainsi de suite le fichier index.php, ligne 68
case 'development':
error_reporting(-1);
ini_set('display_errors', 1);
break;
Vous pouvez modifier cette option pour définir ce dont vous avez besoin. Voici la liste complète:
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
6143 E_ALL
2048 E_STRICT
4096 E_RECOVERABLE_ERROR
J'espère que ça aide.
Les erreurs de syntaxe ne sont pas facilement vérifiées sur les serveurs externes, mais simplement les erreurs d'exécution.
Ce que je fais? Tout comme toi, j'utilise
ini_set('display_errors', 'On');
error_reporting(E_ALL);
Cependant, avant l'exécution, je vérifie les erreurs de syntaxe dans un fichier PHP à l'aide d'un vérificateur de syntaxe en ligne PHP.
Le meilleur, à mon humble avis est PHP Code Checker
Je copie tout le code source, le colle dans la boîte principale et cliquez sur le bouton Analyze
.
Ce n’est pas la méthode la plus pratique, mais les 2 procédures sont complémentaires et résout complètement le problème.
J'ai eu ce problème avec PHP5.4 et Plesk 11.5
D'une manière ou d'une autre, les paramètres de rapport d'erreur et d'affichage d'erreur de la page de configuration du domaine Plesk remplaçaient complètement les paramètres locaux dans les scripts .htaccess ou PHP. Je n'ai pas trouvé le moyen d'éviter cela, utilisez donc les paramètres de Plesk pour activer et désactiver les rapports d'erreur.
Vous pouvez avoir des paramètres dans votre fichier php.ini qui empêchent le site local de remplacer ces paramètres, éventuellement appliqués par le panneau de contrôle utilisé sur votre serveur.