2016-02-16 1 views
4

Je commencerai par écrire que j'ai vu des questions similaires et j'ai essayé les solutions suggérées. Je cours un cli, quand j'ai volontairement mis une erreur d'analyse dans le fichier php, je n'obtiens pas d'erreur dans stdOut.
J'utilise les configurations ci-dessous:
22527 pour error_reporting est
ini_set('error_reporting', E_ALL|E_STRICT);Le rapport d'erreur est bloqué sur les erreurs d'analyse

PHP 5.5.20 (cli) (built: Jan 9 2015 11:20:56) 
php -i | grep error 
display_errors => STDOUT => STDOUT 
display_startup_errors => Off => Off 
error_append_string => no value => no value 
error_log => no value => no value 
error_prepend_string => no value => no value 
error_reporting => 22527 => 22527 
html_errors => Off => Off 
ignore_repeated_errors => Off => Off 
log_errors => Off => Off 
log_errors_max_len => 1024 => 1024 
track_errors => Off => Off 
xmlrpc_error_number => 0 => 0 
xmlrpc_errors => Off => Off 

AJOUT: Si j'ajouter mon propre gestionnaire fatale:

function fatal_handler() { 
     $error = error_get_last(); 
     if ($error !== null) { 
      echo ("\n\nERROR occured!\nFile [{$error['file']}].\nLine: [{$error['line']}].\nMessage: [{$error['message']}]\n\n"); 
     } 
     exit(1); 
    } 
register_shutdown_function("fatal_handler"); 

Je ne peux voir l'erreur en stdio.

Voici un exemple à un code (avec erreur d'analyse) qui ne produit pas d'erreurs pour moi

class A{ 
    const AAA = 'aaa'; 
    static public function Result(A::AAA){ 

    } 
} 
+0

Pourrait ajouter un exemple d'erreur d'analyse? J'ai "PHP Parse error:" dans STDERR, même avec 'display_errors => Off => Off'; PHP 5.5.14 (cli). –

+0

Pourquoi n'utilisez-vous pas le journal apache ou les journaux d'erreurs pour voir l'erreur PHP? pourquoi cli? – unixmiah

+2

Parce que je développe une CLI. –

Répondre

0

Le error_reporting => 22527 => 22527 est équivalent à E_ALL & ~E_DEPRECATED & ~E_STRICT.

Utilisez -1 ou E_ALL niveau d'erreur (E_ALL | E_STRICT en PHP 5.4) pour afficher toutes les erreurs.

Définissez-le dans le fichier ini php.ini.

error_reporting = -1 

Ce qui suit ne fonctionnera pas, car le code contient une erreur d'analyse syntaxique de sorte que le ini_set() ne sera jamais appelé.

<?php 

ini_set('error_reporting', -1) 

class A 
{ 
    const AAA = 'aaa'; 

    static public function Result(A::AAA) 
    { 
    } 
}