Tuesday, December 29, 2015

Prestashop no errors / blank page

Question:
I'm developing a module in PHP for Prestashop and I'm having a tough time trying to debug code. Whenever something falls over it doesn't display errors, just a blank page - either on the front end where the module is hooked, or on the back end module page.
I'm trying to write in another class, or another function but it doesn't like it at all.
It's on a local dev server, PHP errors are on etc.
Can somebody tell me any other way to debug stuff instead of commenting out code? Or some way of getting error codes?
Thanks for your help in advance.
 
Answer:
 As1:
Try opening config/config.inc.php and then change:
@ini_set('display_errors', 'off')
to
@ini_set('display_errors', 'on').

From PS 1.5+, you need to open config/defines.inc.php and change:
define('_PS_MODE_DEV_', false);
to
define('_PS_MODE_DEV_', true);
 
AS2: check this out for the final solution!
First of all, you need to enable errors reporting on your website.
1) Open the file config\config.inc.php and find the following line:
@ini_set(‘display_errors’, off’);    
2) Change ‘off’ to ‘on’, re-upload the file and refresh your page.
If it doesn’t help, go to the next step.
3)Add this code to the top of your index.php file in the root of PrestaShop installation and re-upload it on your server. Then try to access your website and admin panel.
    <?php error_reporting(0); 
       $old_error_handler = set_error_handler("userErrorHandler");

       function userErrorHandler ($errno, $errmsg, $filename, $linenum,  $vars) 
     {
     $time=date("d M Y H:i:s"); 
     // Get the error type from the error number 
     $errortype = array (1    => "Error",
                         2    => "Warning",
                         4    => "Parsing Error",
                     8    => "Notice",
                     16   => "Core Error",
                     32   => "Core Warning",
                     64   => "Compile Error",
                     128  => "Compile Warning",
                     256  => "User Error",
                     512  => "User Warning",
                     1024 => "User Notice");
  $errlevel=$errortype[$errno];

  //Write error to log file (CSV format) 
  $errfile=fopen("errors.csv","a"); 
  fputs($errfile,"\"$time\",\"$filename: 
  $linenum\",\"($errlevel) $errmsg\"\r\n"); 
  fclose($errfile);

  if($errno!=2 && $errno!=8) {
     //Terminate script if fatal error
     die("A fatal error has occurred. Script execution has been aborted");
  } 
   }
?>
After this manipulations you will find the file called errors.csv in the folder where your index.php file is located. Download and open the file errors.csv using any text editor, you will find the error log there.

No comments:

Post a Comment