Quantcast
Viewing latest article 24
Browse Latest Browse All 33

IIS7 and PHP: Show error messages with all the rest of the output

Okay, this is slowly getting annoying. I'm used to work with Apache Webservers and never had any of these problems. IIS seems to try to be intelligent - or whatever.

Here's my situation: My customer wants a PHP website and it is supposed to run on an Windows IIS webserver.

For my development environment I could use my Apache - but just to be sure I want to do it with IIS, too. So I set up a dev-server with Windows Vista, all the latest Updates and installed IIS. Everything fine!

I quickly found instructions on how to install PHP in IIS on some official Microsoft site. Modified php.ini - have been doing stuff like that for years on Linux/Apache machines.

So now I have a Server to run IIS on and my workstation which I use to develop, accessing the files on the server over network.

My first "phpinfo()" page - everything okay. Now I intentionally break the page by introducing a bug: All I get on my workstation is "Server Error 500". When I access the page directly on the server I see an PHP error message... Well, got that worked out with this serverfault.com question.

BUT: It still keeps annoying me: Now if there is an error all I get is JUST the error message. I don't see any of the other output of the script. In fact in Firefox I don't see anything at all in case of an error.

For example if I do this...

<?PHP $sql = 'THIS WON\'T WORK';echo $sql;$DB->exec($sql);  // <- This causes an error?>

all I get is

PHP Fatal error:  Call to a member function exec() on a non-object in C:\inetpub\wwwroot\phpinfo.php on line 4

What I actually want is that it shows me the output of everything that happened before the error so that I can use that to fix my problem.

How do I get IIS (or PHP?) to show me everything? Error message AND context? Over the network?

Update

Okay, I may have a lead. When I go to my console and call my script manually via php-cgi.exe this is what I get:

PHP Fatal error:  Call to a member function exec() on a non-object in C:\inetpub\wwwroot\phpinfo.php on line 4X-Powered-By: PHP/5.4.12Content-type: text/htmlTHIS WON'T WORK<br /><b>Fatal error</b>:  Call to a member function exec() on a non-object in <b>C:\inetpub\wwwroot\phpinfo.php</b> on line <b>4</b><br />

I then tried to pipe the output to a files and figured out that the first two lines are piped to stderr and the rest goes to stdout (Read here for more info about that).

I can also see that what I get in my browser is the output to stderr, because it does not contain any HTML formatting.

I can now narrow my question down to this: I have a FastCGI PHP-CGI that outputs an error message to stderr and the page causing the error to stdout. It currently forwards stderr to the browser - how do I get it to use stdout instead?


Viewing latest article 24
Browse Latest Browse All 33

Trending Articles