php return 500 error but no error log

PhpApacheLoggingError Handling

Php Problem Overview


I am having an issue when I have a php application that is returning an internal server error (500) however nothing is showing up in the error log.

Now I know there are error with what I am trying to run, I know I have missing some files and what not but something should show in the apache error log (otherwise how are I supposed to know exactly what I am missing).

I created a test script is errors it in under the same vhost configuration and those error show up fine so everything seems configured right as far as php/apache. Are there certain php errors that does show up in the error log (php is configure to display any type of notice, warning, , error, fatal error, etc...)?

This is running on ubunut 10.04 with the standard apache and php from the ubuntu repo with apt-get.

Php Solutions


Solution 1 - Php

Scan your source files to find @.

From php documentation site

> Currently the "@" error-control operator prefix will even disable > error reporting for critical errors that will terminate script > execution. Among other things, this means that if you use "@" to > suppress errors from a certain function and either it isn't available > or has been mistyped, the script will die right there with no > indication as to why.

Solution 2 - Php

Copy and paste the following into a new .htaccess file and place it on your website's root folder :

php_flag  display_errors                  on
php_flag  display_startup_errors          on

Errors will be shown directly in your page.

That's the best way to debug quickly but don't use it for long time because it could be a security breach.

Solution 3 - Php

Maybe something turns off error output. (I understand that you are trying to say that other scripts properly output their errors to the errorlog?)

You could start debugging the script by determining where it exits the script (start by adding a echo 1; exit; to the first line of the script and checking whether the browser outputs 1 and then move that line down).

Solution 4 - Php

If you still have 500 error and no logs you can try to execute from command line:

php -f file.php

it will not work exactly like in a browser (from server) but if there is syntax error in your code, you will see error message in console.

Solution 5 - Php

In the past, I had no error logs in two cases:

  1. The user under which Apache was running had no permissions to modify php_error_log file.
  2. Error 500 occurred because of bad configuration of .htaccess, for example wrong rewrite module settings. In this situation errors are logged to Apache error_log file.

Solution 6 - Php

For Symfony projects, be sure to check files in the project'es app/logs

More details available on this post :
https://stackoverflow.com/questions/18577003/how-to-debug-500-error-in-symfony-2

Btw, other frameworks or CMS share this kind of behaviour.

Solution 7 - Php

Here is another reason why errors might not be visible:

I had the same issue. In my case, I had copied the source from a production environment. Hence the ENVIRONMENT variable defined in index.php was set to 'production'. This caused error_reporting to be set to 0 (no logging). Just set it to 'development' and you should start seeing error messages in apache log.

Turned out the 500 was due to a semi colon missing in database config :-)

Solution 8 - Php

Another case which happened to me, is I did a CURL to some of my pages, and got internal server error and nothing was in the apache logs, even when I enabled all error reporting.

My problem was that in the CURL I set curl_setopt($CR, CURLOPT_FAILONERROR, true);

Which then didn't show me my error, though there was one, this happened because the error was on a framework level and not a PHP one, so it didn't appear in the logs.

Solution 9 - Php

You need to enable the PHP error log.

This is due to some random glitch in the web server when you have a php error, it throws a 500 internal error (i have the same issue).

If you look in the PHP error log, you should find your solution.

see here in the doc of how to enable it in the php.ini

Solution 10 - Php

Be sure your file permissions are correct. If apache doesn't have permission to read the file then it can't write to the log.

Solution 11 - Php

What happened for me when this was an issue, was that the site had used too much memory, so I'm guessing that it couldn't write to an error log or displayed the error. For clarity, it was a Wordpress site that did this. Upping the memory limit on the server showed the site again.

Solution 12 - Php

SOLVED I struggled with this and later on, I realized that I was working on PHP 5.6, so I upgraded to PHP 7.0, then I released there were comments placed by git for conflicting codes. I found something like this in my code <<<<<<<< But solved it.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionryanzecView Question on Stackoverflow
Solution 1 - PhpLuc MView Answer on Stackoverflow
Solution 2 - PhpMelomanView Answer on Stackoverflow
Solution 3 - PhpakirkView Answer on Stackoverflow
Solution 4 - PhpjcubicView Answer on Stackoverflow
Solution 5 - PhpsgnsajgonView Answer on Stackoverflow
Solution 6 - PhpBalmipourView Answer on Stackoverflow
Solution 7 - PhpAswin KumarView Answer on Stackoverflow
Solution 8 - Phperic.itzhakView Answer on Stackoverflow
Solution 9 - PhpNaftaliView Answer on Stackoverflow
Solution 10 - PhpJohnny RuinView Answer on Stackoverflow
Solution 11 - PhpJohn-HenryView Answer on Stackoverflow
Solution 12 - PhpJOBView Answer on Stackoverflow