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.

Was it helpful?

Solution

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);

OTHER TIPS

Go to your backoffice page.

Advanced Params -> Performance -> Clean Cache (Eraser Icon)

I had to do

aptitude install php5-mcrypt sudo aptitude install php5-mcrypt sudo service apache2 restart

The encryption was not installed

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.

In my case (PS 1.7) i had blank screen after massively adding many products. I also noticed it was a blank screen with error 500 (i got it from the browser console).

The solution was to simply increase the memory limit of my PHP. It can be done by adding this line to the beginning of index.php file:

ini_set('memory_limit', '512M');

I solved with 512M, but you can try more if the problem still persists.

This is just a temporary/fast solution, if you want it persistent, you can change directly that value at the source, find your php.ini and just edit the value on the memory_limit field.

You can find more info here: https://www.inmotionhosting.com/support/prestashop-16/blank-screen

I just renamed 'class_index.php' in /cache directory to something 'class.index.old.php', then reloaded site - and voila! site was loaded. And in this directory new 'class_index.php' was created.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top