login  Naam:   Wachtwoord: 
Registreer je!
 Forum

PHP op Windows Server 2008 met IIS7

Offline Martijn2008 - 29/12/2009 17:55
Avatar van Martijn2008PHP beginner Hallo allemaal,

Ik heb de standaard installatie van PHP uitgevoerd op Windows Server 2008 icm IIS7. De installatie verliep vlotjes. Ook heb ik PHP getest met phpinfo(), dit werkte naar behoren.

Toen ik mijn website(gemaakt en getest op een linux machine) op de Windows machine zetten, had ik te doen met een 500 - Internal server error.

Ik heb geen weet van hoe ik dit het beste kan debuggen op een Windows machine. Wellicht zitten hier ook wat Windows Server engineers op het forum 

Bedankt alvast voor jullie reacties

Martijn

22 antwoorden

Gesponsorde links
Offline Ultimatum - 30/12/2009 00:09
Avatar van Ultimatum PHP expert Werk je met mod_rewrite? Want als je die gebruikt maar niet aan hebt staan krijg je in dat geval die error als je apache gebruikt. Weet niet of dit ook zo is met IIS.
Offline marten - 30/12/2009 10:38
Avatar van marten Beheerder Een 500 error wordt meestal veroorzaakt door fouten in het script. Gebruik je ook javascript? Daar kan bovenstaande fout ook in voorkomen.
Offline Martijn2008 - 30/12/2009 18:51
Avatar van Martijn2008 PHP beginner @Ultimatum Inderdaad, ik gebruik mod_rewrite in mijn apache configuratie. Ik weet niet of het gebruik daarvan op IIS mogelijk is, maar heb het ook getest met de gebruikelijke querystring en blijf de 500 error houden.

@Marten Javascript wordt toch client-side uitgevoerd, niet serverside? Lijkt me nogal onlogisch dat het script op het ene platform feilloos werkt en op het het andere een internel server error veroorzaakt. Tamelijk apart.
Offline Martijn - 30/12/2009 19:35
Avatar van Martijn Crew PHP het gaat er niet om of je .htaccess mniet gebruikt word, t moet er gewoon niet staan wamp vind het ook lastig.

En anders word het eerst je index kaal neerzetten, en dan stap voor stap dingen terug zetten tot het niet meer werkt.
Basic debuggen dus
Offline Martijn2008 - 30/12/2009 20:00
Avatar van Martijn2008 PHP beginner Aha, zoiets had ik ook al in mijn gedachte, maar daarvoor is het project simpelweg te groot. Van de linux apache-server kreeg ik goede, duidelijk debug informatie retour. Op Windows Server 2008 icm IIS7 krijg je een keiharde 500 internel server error, waar ik eigenlijk niks mee kan.

Bestaat er trouwens een mod_rewrite voor IIS, zodat ik de huidige .htaccess file kan blijven gebruiken? Ik zou namelijk graag php en asp.net willen draaien op 1 platform.
Offline Thijs - 31/12/2009 01:09
Avatar van Thijs Crew hosting Mod_rewrite bestaat niet voor IIS, dit kun je wel afvangen met ISAP_Rewrite (http://www.helicontech.com/isapi_rewrite/)
Offline Martijn2008 - 01/01/2010 19:17 (laatste wijziging 02/01/2010 15:36)
Avatar van Martijn2008 PHP beginner ThnX, heb het even geïnstalleerd. Ga me er is in verdiepen.

Ik ben zojuist ook nog tegen een ander probleempje aangelopen. PHP-GD werkt namelijk niet, terwijl deze module wel degelijk geïnstalleerd staat. Heb dit gecontroleerd met phpinfo(). Het is namelijk niet mogelijk om een thumbnail van een jpg-afbeelding te maken.

De 500 internel server error heb ik inmiddels kunnen verhelpen door in php.ini error display aan te zetten.
-------------------------------------------------------------
GD

GD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.1.9
T1Lib Support enabled
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled
Offline Rik - 02/01/2010 16:24
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Martijn2008 schreef:
Het is namelijk niet mogelijk om een thumbnail van een jpg-afbeelding te maken.
Maar dan de vraag, ligt dat aan GD of aan je script? Wat krijg je nu dan voor foutmelding?
Offline TotempaaltJ - 02/01/2010 20:14
Avatar van TotempaaltJ PHP interesse
Rik schreef:
[..quote..]Maar dan de vraag, ligt dat aan GD of aan je script? Wat krijg je nu dan voor foutmelding?

En heb je wel de jpg-6b library? (kweetniet, dat stond bij requirements)
Offline Martijn2008 - 02/01/2010 21:09 (laatste wijziging 02/01/2010 21:13)
Avatar van Martijn2008 PHP beginner Om een thumbnail on-the-fly aan te maken roep ik een script op, genaamd thumb.php. In de adresbar staat het volgende url:

  1. http://localhost/thumb.php?im=albums/album_1/DSC01526.jpg


Als error message krijg ik hetzelfde url terug in de webbrowser. Dus zo:

  1. http://localhost/thumb.php?im=albums/album_1/DSC01526.jpg


De inhoud van thumb.php is als volgt(onderstaande code werkt dus op de linux machine en niet op de Windows 2008(IIS) bak):

  1. <?php
  2.  
  3. // Useage: thumbnail.php?im=image.jpg
  4. // Optional: thumbnail.php?im=image.jpg&amp;maxsize=100
  5.  
  6. $im = $_GET['im'];
  7. $maxsize = $_GET['maxsize'];
  8.  
  9. if ($maxsize == '') {
  10. $maxsize = 91;
  11. }
  12.  
  13. // The file
  14. $filename = $im;
  15.  
  16. // Set a maximum height and width
  17. $width = $maxsize;
  18. // $height = $maxsize;
  19. $height = 68;
  20.  
  21. // Content type
  22. header('Content-type: image/jpeg');
  23.  
  24. // Get new dimensions
  25. list($width_orig, $height_orig) = getimagesize($filename);
  26.  
  27. if ($width && ($width_orig < $height_orig)) {
  28. $width = ($height / $height_orig) * $width_orig;
  29. } else {
  30. $height = ($width / $width_orig) * $height_orig;
  31. }
  32.  
  33. // Resample
  34. $image_p = imagecreatetruecolor($width, $height);
  35. $image = imagecreatefromjpeg($filename);
  36. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
  37.  
  38. // Output
  39. imagejpeg($image_p, null, 80);
  40. imagedestroy($image);
  41. imageDestroy($image_p);
  42.  
  43. ?>


Offline Rik - 02/01/2010 21:56
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Je krijgt die url te zien als er ergens iets fout gaat (afhankelijk van de browser geloof ik). In ieder geval, als je header('Content-type: image/jpeg'); weg haalt, krijg je waarschijnlijk een php fout te zien die je kunt verhelpen.
Offline Martijn2008 - 02/01/2010 22:29
Avatar van Martijn2008 PHP beginner Bedankt voor je reactie, heb nu inderdaad een error message. Alleen krijg ik nu een aantal zeer bijzondere tekens te zien. Ik word er niet veel wijzer van, jij? Heb de error message op plaatscode.be geplaatst.

Offline Rik - 03/01/2010 11:25
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Die rare tekens is eigenlijk je afbeelding, alleen kan deze niet worden weergegeven omdat die fout er voor staat. Het is duidelijk dat je het script niet goed aanroept, want $_GET['maxsize'] bestaat niet.

Ik zou van dit maken:
  1. $maxsize = $_GET['maxsize'];
  2. if ($maxsize == '') {
  3. $maxsize = 91;
  4. }
Dit:
  1. $maxsize = isset($_GET['maxsize']) ? $_GET['maxsize'] : 91;
Dat doet hetzelfde, alleen krijg je dan geen foutmelding als je geen maxsize param meegeeft. Ik zou trouwens ook een controle op $_GET['im'] inbouwen, want daarmee kan je een zelfde probleem krijgen.
Offline Martijn2008 - 03/01/2010 17:48 (laatste wijziging 05/01/2010 20:36)
Avatar van Martijn2008 PHP beginner Super!! Weer een stapje dichterbij. Heb het script nu als volgt gemaakt:

  1. <?php
  2.  
  3. // Useage: thumbnail.php?im=image.jpg
  4. // Optional: thumbnail.php?im=image.jpg&amp;maxsize=100
  5.  
  6. if(isset($_GET['im']) && !empty($_GET['im']))
  7. {
  8. if(file_exists($_GET['im']) == true)
  9. {
  10. $im = $_GET['im'];
  11.  
  12. if (isset($_GET['maxsize']) && !empty($_GET['maxsize']))
  13. {
  14. $maxsize = intval($_GET['maxsize']);
  15. }
  16. else
  17. {
  18. $maxsize = 91;
  19. }
  20.  
  21. // The file
  22. $filename = $im;
  23.  
  24. // Set a maximum height and width
  25. $width = $maxsize;
  26. // $height = $maxsize;
  27. $height = 68;
  28.  
  29. // Content type
  30. header('Content-type: image/jpeg');
  31.  
  32. // Get new dimensions
  33. list($width_orig, $height_orig) = getimagesize($filename);
  34.  
  35. if ($width && ($width_orig < $height_orig))
  36. {
  37. $width = ($height / $height_orig) * $width_orig;
  38. }
  39. else
  40. {
  41. $height = ($width / $width_orig) * $height_orig;
  42. }
  43.  
  44. // Resample
  45. $image_p = imagecreatetruecolor($width, $height);
  46. $image = imagecreatefromjpeg($filename);
  47. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
  48.  
  49. // Output
  50. imagejpeg($image_p, null, 80);
  51. imagedestroy($image);
  52. imageDestroy($image_p);
  53. }
  54. else
  55. {
  56. echo '<font color="red">Afbeelding is niet gevonden</font>';
  57. }
  58. }
  59. else
  60. {
  61. echo '<font color="red">GET(im) is leeg</font>';
  62. }
  63.  
  64. ?>


Echter ondervind nu met deze opzet ook problemen op mijn Linux server. Krijg de volgende error melding

  1. Warning: Cannot modify header information - headers already sent by (output started at /var/www/thumb.php:2) in /var/www/thumb.php on line 31
  2.  
  3. // weer al die maffe tekentjes


Als ik regel 31 uit comment, houd ik alleen die gekke tekens over. Krijg dus geen afbeelding.
Offline Rik - 06/01/2010 10:19
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Dat is een heel bekende fout, en het antwoord staat in de faq:
http://www.sitemasters.be/FAQ/2/Foutmeldingen#faq2
Offline Martijn2008 - 10/01/2010 19:02 (laatste wijziging 10/01/2010 19:08)
Avatar van Martijn2008 PHP beginner
  1. <?php
  2. ?>


Brengt niet de oplossing hoor. Ik krijg nu geen foutmelding meer, maar de afbeelding wordt gewoon niet weergeven. In plaats daarvan zie ik de de link naar het thumbnail script dat ik gebruik. De thumbnail wordt dus niet weergeven.

  1. http://localhost/thumb.php?im=example.jpg

Offline Rik - 10/01/2010 20:04
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Post eens de exacte uitvoer van je script? Die gekke tekens zijn het plaatje, maar de browser accepteert het waarschijnlijk niet omdat er iets voor of iets achter staat. Ik ben benieuwd wat dat is.
Offline Martijn2008 - 11/01/2010 01:50
Avatar van Martijn2008 PHP beginner Heee Rik. De exacte uitvoer heb ik al gepost. Weet niet of je dit bedoeld?. Het script heb ik 2 comments geleden gepost.
Offline Rik - 11/01/2010 20:48
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Het is ook een tijdje terug al. 

Maar weet je zeker dat je nu geen andere output krijgt? Want:[error]Notice: Undefined index: maxsize in C:\inetpub\wwwroot\thumb.php on line 7[/error]lijk je in de code die je geeft verholpen te hebben.
Offline Martijn2008 - 11/01/2010 23:44
Avatar van Martijn2008 PHP beginner Het probleem met de thumbnailer is ineens opgelost. Nu nog MOD Rewrite werkend zien te krijgen op IIS, zodat hij mijn .htaccess leest en uitvoert.
Offline Rik - 12/01/2010 19:02 (laatste wijziging 12/01/2010 19:03)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Thijs schreef:
Mod_rewrite bestaat niet voor IIS, dit kun je wel afvangen met ISAP_Rewrite (http://www.helicontech.com/isapi_rewrite/)


Edit:
Beter dan Thijs kan ik je niet helpen, want hij heeft er verstand van.  
Offline Martijn2008 - 15/01/2010 20:24
Avatar van Martijn2008 PHP beginner Ik heb die compatible MOD_REWRITE voor IIS7 nu geïnstalleerd, maar het werkt niet 

Wellicht doe ik iets verkeerd, iemand suggesties voor een oplossing?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.275s