[php] mail problemen en gifjes komen maar half :?

Pagina: 1
Acties:

  • jwbagger
  • Registratie: Februari 2001
  • Laatst online: 11-08 15:50

jwbagger

,.-~'`'~-.,

Topicstarter
Ik heb een aantal problemen met PHP op m'n webserver sinds ik hem heb geupgraded van windows 98(firstedition) naar windows XP professional.

welke vragen ga ik stellen:
  • mail() - doet het niet
  • fpassthru werkt niet goed :? <<probleem opgelost :)
  • nog een vraagje tot slot.
mail() - doet het niet
Als ik probeer mails te versturen via een script dat ik sinds de update van mn server niet heb gewijzigd, krijg ik nu opeens:
code:
1
Warning: Server Error in d:\webserver\doel\scripts\adduser\makeuser.php on line 30

Ik heb in mijn php.ini de volgende waarden gezet:
code:
1
2
SMTP = mail.chello.nl
sendmail_from = automailer@innovatix.tk

Voor meer info over mijn configuratie van de php-server, klik hier.
Waar zou dit aan kunnen liggen? Wat doe ik verkeerd :?


fpassthru werkt niet goed :?
Ik heb een random icon script gemaakt, waarbij users zelf icons kunnen uploaden naar de server, die automatisch random uit die map een icon kiest. Dit script werkte perfect totdat ik m'n server upgradede van windows98 naar windowsXP...
Nu krijg ik op zn hoogst de helft van de GIF terug: overzicht-pagina waarop het dus mis gaat... De fout zit dus niet zozeer in het script, want dat werkte goed, maar ik denk dus dat het toch ergens in mn config van mn server zit... waar zou dat aan kunnen liggen? Ik dacht zelf aan een versie van GD, maar als ik de hele php-directory nu vervang door degene die ik in win98 had gebackupped werkt het nog steeds niet... :?
Voor de compleetheid, hier een kleine "samenvatting" van het script icon.php:
PHP:
1
<?Header("Content-type: image/gif");Header("Cache-Control: no-cache, must-revalidate");$fn = fopen("icons/$nr.gif","r");fpassthru($fn);?>

Hopelijk kan iemand hier wat mee...

nog een vraagje tot slot
Een laatste klein vraagje: als ik iets heb gewijzigd in php.ini, ben ik dan verplicht mn server helemaal opnieuw op te starten voordat die settings er in zitten, en is er geen andere mogelijkheid om die binnen 10 seconden door te kunnen voeren?

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 13:44
Op zaterdag 18 mei 2002 22:42 schreef jwbagger het volgende:
welke vragen ga ik stellen:
Cool, een inleiding. :)
• mail() - doet het niet
Wat staat er in je serverlog? Ik geloof dat PHP by default met sendmail probeert te werken, welke onder Windows niet zonder meer aanwezig is.
• fpassthru werkt niet goed :?
Voor het lezen van binary files moet je onder DOS/Windows "rb" gebruiken (read binary) in plaats van gewoon "r".
• nog een vraagje tot slot.
Om wijzigingen in php.ini door te voeren moet je echt herstarten als PHP als webserver module draait; niet als PHP als CGI module draait. Instellingen in .ht config files worden wel per-request doorgevoerd. Voor wijzigingen daarin hoef je dus niet te restarten.

  • jwbagger
  • Registratie: Februari 2001
  • Laatst online: 11-08 15:50

jwbagger

,.-~'`'~-.,

Topicstarter
Op zaterdag 18 mei 2002 22:46 schreef Soultaker het volgende:

[..]

Cool, een inleiding. :)
ik weet van mezelf dat mn posts altijd te lang zijn, zeker als ik een vraag probeer te stellen en duidelijk te maken... dus probeer ik 't zo overzichtelijk mogelijk te maken ;)
[..]

Wat staat er in je serverlog? Ik geloof dat PHP by default met sendmail probeert te werken, welke onder Windows niet zonder meer aanwezig is.
Daarom stel ik de variabelen SMTP & sendmail_from ook in... daarachter staat namelijk ;win32 only...
In m'n Apache logs zie ik bij error.log niets staan over een mislukte actie van php... logisch lijkt me, want die gaat alleen maar over de foute "requests" van clients... en op zich vraag ik iets dat het hoort te doen, maar gaat php de mist in...
Dus 'k snap niet waarom hij mail() niet doet... hoe kan ik sendmail dan echt specifiek uitzetten?
[..]

Voor het lezen van binary files moet je onder DOS/Windows "rb" gebruiken (read binary) in plaats van gewoon "r".
:* Je bent m'n held!

Hij doet het weer!
Wat een simpele oplossing, dat één klein lettertje het kan doen zeg! :D

Maar dan blijft wel mn vraag: waarom deed "r" het wel onder win98 dan? en weigert hij 't opeens onder XP :?
[..]

Om wijzigingen in php.ini door te voeren moet je echt herstarten als PHP als webserver module draait; niet als PHP als CGI module draait. Instellingen in .ht config files worden wel per-request doorgevoerd. Voor wijzigingen daarin hoef je dus niet te restarten.
ik heb in mn httpd.conf dit gedaan:
code:
1
2
LoadModule php4_module c:/php/sapi/php4apache.dll
AddModule mod_php4.c

en nou een echte übern00b vraag van mij: wat heb ik nou gedaan :?
in win98 had ik 't trouwens via de Action application/x-httpd-php "/php/php.exe" gedaan... waarom ik dat nu niet meer zo heb mag Joost weten :+ Had weer es zin in wat anders, zullen we maar zeggen :P

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 13:44
Op zaterdag 18 mei 2002 22:58 schreef jwbagger het volgende:
In m'n Apache logs zie ik bij error.log niets staan over een mislukte actie van php... logisch lijkt me, want die gaat alleen maar over de foute "requests" van clients... en op zich vraag ik iets dat het hoort te doen, maar gaat php de mist in...
Nou, je krijgt een server error, dus zou de webserver wel degelijk de uitvoer van PHP moeten hebben opgevangen. Als het in PHP fout zou gaan, zou de foutmelding op je scherm komen (dan genereert PHP dus gewoon uitvoer en is er vanuit de webserver gezien niets aan de hand).
Maar dan blijft wel mn vraag: waarom deed "r" het wel onder win98 dan? en weigert hij 't opeens onder XP :?
Geen idee. :) 't Is sowieso achterhaalt, dat onderscheid tussen ascii en binary data, maar helaas nog steeds noodzakelijk onder Windows systemen.
ik heb in mn httpd.conf dit gedaan:
code:
1
2
LoadModule php4_module c:/php/sapi/php4apache.dll
AddModule mod_php4.c

en nou een echte übern00b vraag van mij: wat heb ik nou gedaan :?
Nu laat je PHP als Apache module. PHP wordt dynamisch gelinked met Apache bij het opstarten, op welk moment PHP z'n ini file gaat inlezen. Om die file opnieuw in te lezen moet je Apache dan ook opnieuw opstarten. (Tenzij er een slimmere manier is die ik even niet ken.)
in win98 had ik 't trouwens via de Action application/x-httpd-php "/php/php.exe" gedaan...
En dan is het dus een CGI module. php.exe Wordt per request gestart en gaat dus ook per request de ini file inlezen.

  • jwbagger
  • Registratie: Februari 2001
  • Laatst online: 11-08 15:50

jwbagger

,.-~'`'~-.,

Topicstarter
Op zaterdag 18 mei 2002 23:07 schreef Soultaker het volgende:
Nou, je krijgt een server error, dus zou de webserver wel degelijk de uitvoer van PHP moeten hebben opgevangen. Als het in PHP fout zou gaan, zou de foutmelding op je scherm komen (dan genereert PHP dus gewoon uitvoer en is er vanuit de webserver gezien niets aan de hand).
Die foutmelding is dus door php gegenereerd... en staat in de opmaak zoals php altijd zn foutmeldingen zet, dus het is niet een error die door Apache is gemaakt. Apache ziet dus inderdaad gewoon PHP uitvoer en er lijkt daarvoor dus niets aan de hand te zijn...
Dat is dus het vage van het geheel, ik kan nergens natrekken waar ik nou verkeerd zit :?
Nu laat je PHP als Apache module. PHP wordt dynamisch gelinked met Apache bij het opstarten, op welk moment PHP z'n ini file gaat inlezen. Om die file opnieuw in te lezen moet je Apache dan ook opnieuw opstarten. (Tenzij er een slimmere manier is die ik even niet ken.)
Alleen Apache restarten, of mn hele server? Als het alleen maar om Apache gaat vind ik dat nog niet zo'n ramp...
En dan is het dus een CGI module. php.exe Wordt per request gestart en gaat dus ook per request de ini file inlezen.
Welke van de twee mogelijkheden is eigenlijk "beter"? Ik denk dat ik morgen maar eens ga proberen om php als CGI te draaien, en dan te kijken of het mail() probleem daarmee over is... keep you updated :)

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 13:44
Op zaterdag 18 mei 2002 23:12 schreef jwbagger het volgende:
Alleen Apache restarten, of mn hele server? Als het alleen maar om Apache gaat vind ik dat nog niet zo'n ramp...
Zowel Apache als PHP zijn ontwikkeld door UNIX ontwikkelaars en gebaseerd op UNIX technologie. Een UNIX server reboot je niet voor een wijziging in configuratie. Alleen Apache restarten is dus voldoende.
Welke van de twee mogelijkheden is eigenlijk "beter"?
CGI applicaties 'kosten' relatief veel, omdat voor elke request een apart proces opgestart moet worden. Elke keer moeten dan ook weer configuratiefiles verwerkt worden, etcetera. Je huidige configuratie is dus waarschijnlijk beter. Een voordeel van CGI applicaties is dat ze alleen geheugen gebruiken als ze actief zijn. Meestal is dat niet zo'n belangrijk criterium, though.
Ik denk dat ik morgen maar eens ga proberen om php als CGI te draaien, en dan te kijken of het mail() probleem daarmee over is... keep you updated :)
Ok, veel succes.
Pagina: 1