Coder Perfect

How can I get PHP to show the problem rather than returning 500 Internal Server Error [duplicate]?

Problem

Nothing like this has ever happened before. Normally, the error is displayed, but now I merely get a 500 internal server error. Previously, when the error was displayed, it was on various servers. I’m now on a different server (I have full root, so if I need to configure it somewhere in the php.ini, I can.) Maybe it’s anything to do with Apache?

I’ve been putting up with it by uploading the file to my other server and running it there to identify the error, but it’s getting old. Is there a way to get this to work?

Asked by Rob

Solution #1

In your php.ini file, look at the error reporting, display errors, and display startup errors options. They should be set to E ALL and “On,” respectively (however display errors should not be used on a production server, so disable it and use log errors instead if/when you deploy it). These options (except display startup errors) can also be changed at the start of your script to set them at runtime (though you may not catch all errors this way)

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

Restart the server after that.

Answered by awgy

Solution #2

To print the syntax mistake that may be causing PHP to produce the status 500 error, run php -l filename> (that’s a ‘L’) from the command line. It’ll say something like this:

Unexpected ” in filename> on line 18 causes a PHP parse error.

Answered by Aaron

Solution #3

It’s worth mentioning that if your error is caused by.htaccess, such as a missing rewrite module, the 500 internal server error will still appear.

Answered by dtbarne

Solution #4

Make sure you double-check to see if

display_errors

or

error_reporting

someplace else in the ini file is active (not a comment).

After upgrading to Kubuntu 16.04, my development server refused to report errors – I examined php.ini several times and discovered a diplay errors = off; roughly 100 lines below my code.

display_errors = on;

So remember the last one counts!

Answered by Max

Solution #5

Make an effort not to go.

MAMP > conf > [your PHP version] > php.ini

but

MAMP > bin > php > [your PHP version] > conf > php.ini

It worked for me if I changed it there…

Answered by von verletzt

Post is based on https://stackoverflow.com/questions/2687730/how-can-i-make-php-display-the-error-instead-of-giving-me-500-internal-server-er