Problems with error when creating file logerro.txt

-1

Notice: Undefined variable: strErro

   <?php
  class DB{
  private static $conn;
  static function getConn(){
      if(is_null(self::$conn)){
          self::$conn = new PDO('mysql:host=localhost;dbname=sllapsocial','root','');
          self::$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
     }

     return self::$conn;
  }
   }


   function logErros($errno){
   if(error_reporting()==0) return;

  $exec = func_get_arg(0);

   $errno = $exec->getCode();
   $errstr = $exec->getMessage();
   $errfile = $exec->getFile();
   $errline = $exec->getLine();
   $err = 'CAUGHT EXCEPTION';

  if(ini_get('log_errors')) error_log(sprintf("PHP %s: %s in %s on line     %d",$err,$errstr,$errfile,$errline));

   $strErro = 'erro:'.$err.' no arquivo: '.$errfile.' ( linha '.$errline.' ) ::     IP('.$_SERVER['REMOTE_ADDR'].') data:'.date('d/m/y H:i:s')."\n";
   }

  $arquivo = fopen('logerro.txt','a');
//Aparece aqui Notice: Undefined variable: strErro estou fazendo corréto?
    fwrite($arquivo,$strErro);
    fclose($arquivo);

   set_error_handler('logErros');
    
asked by anonymous 05.10.2014 / 05:29

1 answer

1

The problem is the variable scope % of% it has been defined within the function and can not be accessed outside of it.

   function logErros($errno){
      //código omitido ...

      if(ini_get('log_errors')) //if em uma linha...
         error_log(sprintf("PHP %s: %s in %s on line     %d",$err,$errstr,$errfile,$errline));

      $strErro = 'erro:'.$err.' no arquivo: '.$errfile.' ( linha '.$errline.' ) ::     IP('.$_SERVER['REMOTE_ADDR'].') data:'.date('d/m/y H:i:s')."\n";
   } //<---- fim da função $strErro não pode ser acessada depois dessa linha.

   //código fora da função....  
   $arquivo = fopen('logerro.txt','a');
   fwrite($arquivo,$strErro);

The simplest solution is to give a $strErro in the final function. The new call would be made in the form:

$msg = logErros($errno); 
if($msg){
   fwrite($arquivo, $msg);
   fclose($arquivo);
}     
    
05.10.2014 / 05:49