Metropolis
Metropolis

Reputation: 6622

Display PHP Errors in IIS

I am trying to get PHP errors to display on the screen using IIS vrs 8.5 and PHP vrs 5.2.17, but I continue to get the IIS 500 error http page, or a blank screen. I have already found numerous SO posts that have supposed fixes, but nothing on them has fixed my problem yet. Here is what I have tried.

Currently I am getting a blank page instead of the IIS 500 error on the screen. I have already verified that display_errors is on, and error_reporting is correct. I also know that the php page runs just fine. I am purposely causing this php error by removing a semi-colon on the page. So I already know everything is working fine. PHP Error logging is also working, but I want the errors to display on the page so I dont have to look at the error log every 5 minutes.

What else could be causing this?

Upvotes: 7

Views: 25239

Answers (6)

EACUAMBA
EACUAMBA

Reputation: 641

If ou are Getting error 500 when active php to show errors, maybe you need to turn off the tracking error Follow the step by step to fix.

If you don't have downnload the PHP Manager for IIS, you can find it in Web Platform Installer. Then open it. enter image description here

After that click on manage all settings enter image description here

Now Just turn off this setting enter image description here

Upvotes: 1

4532066
4532066

Reputation: 2110

I was struggling with this issue - I have my PHP Handler Mapping set as follows, confirming I'm using PHP 5.3:

enter image description here

Therefore I then went to the corresponding location to find the correct file, here: C:\Program Files (x86)\PHP\v5.3 and edited php.ini

At first it looked like this:

; error_reporting
;   Default Value: E_ALL & ~E_NOTICE
;   Development Value: E_ALL | E_STRICT
;   Production Value: E_ALL & ~E_DEPRECATED

I changed it to this:

error_reporting(E_ALL);
;   Default Value: E_ALL & ~E_NOTICE
;   Development Value: E_ALL | E_STRICT
;   Production Value: E_ALL & ~E_DEPRECATED

I had to restart the Server in IIS to apply the change (choosing the Server from the list at the top on the left hand side, rather than selecting the Site on the left, lower down):

enter image description here

Now I see the error message - e.g.

Parse error: syntax error, unexpected '=' in C:\data\test.php on line 2

Instead of this type of generic error - e.g. on Chrome:

enter image description here

Upvotes: 0

BarisKayar
BarisKayar

Reputation: 1

under server configuration feature view you see fast-cgi settings, double click it. you see php-cgi.exe. double click it. set standart error mode to IgnoreAndReturn200.

regards

Upvotes: 0

Jordan Partridge
Jordan Partridge

Reputation: 51

I was having a similar issue getting a 500 error instead of a PHP error. I fixed the issue by going to PHP Manager within IIS

Under PHP Settings click configure error reporting. This will allow you to choose between Development and Production machine. If you choose Production you will get no detailed PHP errors in the browser, you will only get wrritten to a logfile. Development will allow for both errors to be displayed and written to a logfile.

I hope this helps.

Upvotes: 1

Nikita Bernstein
Nikita Bernstein

Reputation: 31

Make sure you are editing the right php.ini file. To check which file needs to be edited, go to IIS > Handler Mappings and look for PHP. Then check which directory they are located in.

In my case, I had two directories and was editing the wrong php.ini file, which was the reason why I was unable to get the errors to display.

Upvotes: 2

Adarsh Rajput
Adarsh Rajput

Reputation: 1276

IF you set custom error to Detailed in feature settings of error pages for website and server both

AND if in your php.ini file you set the display_errors = on & error_reporting = E_ALL

THEN there is only one possibility for getting [IIS default 500 error page] is that "Your PHP is not working coz of miss configuration."

The required configurations are:

After setting Handler Mappings to your php-cgi.exe file(which is in you php installation dir) as FastCGI, open the php.ini file and edit following lines OR add if not found in file. (if php.ini is not exists in you PHP installation dir then rename from existing php.ini-development OR php.ini-production)

1) extension_dir = "ext\"

;ext folder will be in PHP installation, if not create and don't forget ending \

2) log_errors = On

3) error_log = "C:\inetpub\temp\php-errors.log"

4) cgi.force_redirect = 0

; may be you need to add this line add it anywhere, for instance-before '; File Uploads ;'

5) cgi.fix_pathinfo = 1

6) fastcgi.impersonate = 1

7) fastcgi.logging = 0

 Be careful and there should not `;` before any of these lines.

see documentation - installing/configuring PHP

Even after correct configurations PHP may not work because of system corruption. You can check by double click on php-cgi.exe and php-win.exe it should run without proper error (other then warnings OR ext/fileName... is missing messages - these are OK).

Note: after these many other setting are requires to run all things of php (ex. session), but by these SIMPLE PHP WILL WORK or PHP will properly show the error for what's wrong (NOT 500 page).

Upvotes: 13

Related Questions