ovh - message d'erreur php formulaire




Comment puis-je obtenir des erreurs PHP à afficher? (16)

Ça fonctionne toujours pour moi:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

Cependant, ceci ne permet pas à PHP d'afficher des erreurs d'analyse - la seule façon de montrer ces erreurs est de modifier votre php.ini avec cette ligne:

display_errors = on

J'ai vérifié mon fichier PHP ini et les erreurs d'affichage sont définies et le rapport d'erreur est E_ALL . J'ai redémarré mon serveur web Apache.

J'ai même mis ces lignes au début de mon script, et il n'attrape même pas de simples erreurs d'analyse. Par exemple, je déclare des variables avec un "$" et je ne ferme pas les déclarations ";" . Mais tous mes scripts montrent une page blanche sur ces erreurs, mais je veux réellement voir les erreurs dans la sortie de mon navigateur.

error_reporting(E_ALL);
ini_set('display_errors', 1);

Que reste-t-il à faire?


C'est ce que j'ai appris. Dans le fichier PHP.INI

error_reporting = E_ALL
display_errors = On

Cela fonctionnera:

<?php
     error_reporting(E_ALL);
     ini_set('display_errors', 1);    
?>

Certains fournisseurs d'hébergement Web vous permettent de modifier les paramètres PHP dans le fichier .htaccess .

Vous pouvez ajouter la ligne suivante:

php_value display_errors 1

J'ai eu le même problème que le vôtre et cette solution l'a corrigé.


Créez un fichier appelé php.ini dans le dossier où réside votre fichier PHP.

Dans php.ini, ajoutez le code suivant (je donne une erreur simple montrant le code):

display_errors = on

display_startup_errors = on

Définissez ceci dans votre index.php

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

Ecrivez:

error_reporting(-1);

Je voudrais habituellement aller avec le code suivant dans mon projet PHP simple qui sont très petites, si le projet devient grand alors je le recommanderai.

if(!defined('ENVIRONMENT')){
    define('ENVIRONMENT','DEVELOPMENT');
}

$base_url   =   null;

if (defined('ENVIRONMENT'))
{
    switch (ENVIRONMENT)
    {
        case 'DEVELOPMENT':
            $base_url   =   'http://localhost/product/';
            ini_set('display_errors',1);
            ini_set('display_startup_errors',1);
            error_reporting(E_ALL|E_STRICT);
            break;

        case 'PRODUCTION':
            $base_url   =   'Prod url'; /* https://google.com */
            error_reporting(0);
            /* Mechanism to log errors */
            break;

        default:
            exit('The application environment is not set correctly.');
    }
}

J'espère que cela t'aides.



Pour afficher toutes les erreurs, vous devez:

1. Ayez ces lignes dans le script PHP que vous appelez du navigateur (typiquement index.php ):

error_reporting(E_ALL);
ini_set('display_errors', 1);

2. (a) Assurez-vous que ce script n'a pas d'erreurs de syntaxe

-ou-

2. (b) Set display_errors = On dans votre php.ini

Sinon, il ne peut même pas exécuter ces 2 lignes!

Vous pouvez vérifier les erreurs de syntaxe dans votre script en exécutant (sur la ligne de commande):

php -l index.php

Si vous incluez le script d'un autre script PHP, il affichera des erreurs de syntaxe dans le script inclus . Par exemple:

index.php

error_reporting(E_ALL);
ini_set('display_errors', 1);

// Any syntax errors here will result in a blank screen in the browser

include 'my_script.php';

my_script.php

adjfkj // This syntax error will be displayed in the browser

Si vous vous trouvez dans une situation où vous ne pouvez pas modifier le paramètre via php.ini ou .htaccess vous n'avez pas de chance d'afficher des erreurs lorsque vos scripts PHP contiennent des erreurs d'analyse. Vous devrez alors résoudre de lisser les fichiers sur la ligne de commande comme ceci:

find . -name '*.php' -type f -print0 | xargs -0 -n1 -P8 php -l | grep -v "No syntax errors"

Si votre hôte est tellement verrouillé qu'il ne permet pas de modifier la valeur via php.ini ou .htaccess , il peut également interdire la modification de la valeur via ini_set . Vous pouvez vérifier cela avec le script PHP suivant:

<?php
if( !ini_set( 'display_errors', 1 ) ) {
  echo "display_errors cannot be set.";
} else {
  echo "changing display_errors via script is possible.";
}

Si, malgré toutes les réponses ci-dessus (ou si vous ne pouvez pas modifier votre fichier php.ini), vous ne pouvez toujours pas obtenir un message d'erreur, essayez de créer un nouveau fichier PHP qui active le rapport d'erreur et incluez le fichier problème. par exemple:

error_reporting(9999999);
ini_set('display_errors', 1);
require_once('problem_file.php');

Bien que tout soit correctement défini dans mon fichier php.ini , c'était la seule façon de détecter une erreur d'espace de noms. Mon scénario exact était:

//file1.php
namespace a\b;
class x {
    ...
}

//file2.php
namespace c\d;
use c\d\x; //Dies because it's not sure which 'x' class to use
class x {
    ...
}

Voici un script PHP:

<?php
    ini_set("display_startup_errors", 1);
    ini_set("display_errors", 1);

    /* Reports for either E_ERROR | E_WARNING | E_NOTICE  | Any Error*/
    error_reporting(E_ALL);

    echo(abc); /* Notice: abc is an undefined constant */
?>

Pour une explication plus détaillée des erreurs PHP, visitez PHP Error - error_reporting () .


Vous ne pouvez pas détecter les erreurs d'analyse lors de l'activation de la sortie d'erreur lors de l'exécution, car elle analyse le fichier avant d'exécuter quoi que ce soit (et comme il rencontre une erreur, il n'exécute rien). Vous devrez modifier la configuration du serveur afin que display_errors soit activé et que le niveau error_reporting approprié soit utilisé. Si vous n'avez pas accès à php.ini, vous pouvez utiliser .htaccess ou similaire, selon le serveur.

Cette question peut fournir des informations supplémentaires.


Vous pouvez constater que tous les paramètres de "rapport d'erreurs" ou "erreurs d'affichage" ne semblent pas fonctionner dans PHP 7. En effet, la gestion des erreurs a changé. Essayez ceci à la place:

try{
     // Your code
} 
catch(Error $e) {
    $trace = $e->getTrace();
    echo $e->getMessage().' in '.$e->getFile().' on line '.$e->getLine().' called from '.$trace[0]['file'].' on line '.$trace[0]['line'];
}

Ou, pour attraper des exceptions et des erreurs en une fois (ce n'est pas rétrocompatible avec PHP 5):

try{
     // Your code
} 
catch(Throwable $e) {
    $trace = $e->getTrace();
    echo $e->getMessage().' in '.$e->getFile().' on line '.$e->getLine().' called from '.$trace[0]['file'].' on line '.$trace[0]['line'];
}

Vous pouvez faire quelque chose comme ci-dessous:

Définissez les paramètres ci-dessous dans votre fichier d'index principal

    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);

Ensuite, en fonction de vos besoins, vous pouvez choisir ce que vous voulez montrer:

Pour toute erreur, avertissement et avis

    error_reporting(E_ALL); OR error_reporting(-1);

Pour toutes les erreurs

    error_reporting(E_ERROR);

Pour tous les avertissements

    error_reporting(E_WARNING);

Pour tous les avis

    error_reporting(E_NOTICE);

Pour plus d'informations, here





error-reporting