Session_start crashed de pagina
Heel soms echt gewoon zwaar random doet me pagina het niet (white page, een 500 idee). Als ik dan ga debugge kom ik erachter dat het probleem in de session start ligt. Als ik dan dit doe:
Dan zie ik dus wel a en niet b en geen normale error like session has allready been thrown ofzo. Het ligt echt aan de session start handler. Ik gebruik gewoon de default handler dus geen eigen session module ofzo.
Ik heb error reporting etc aan via htaccess maar der wordt voor dit probleem geen log aangemaakt.
Heeft iemand enig idee?
Het is nogal een ernstig probleem
Dan zie ik dus wel a en niet b en geen normale error like session has allready been thrown ofzo. Het ligt echt aan de session start handler. Ik gebruik gewoon de default handler dus geen eigen session module ofzo.
Ik heb error reporting etc aan via htaccess maar der wordt voor dit probleem geen log aangemaakt.
Heeft iemand enig idee?
Het is nogal een ernstig probleem
Gewijzigd op 01/10/2012 19:21:17 door Jelle -
Ongeveer al 1000 keer of meer behandeld:
Er mag geen enkele output naar de browser vóór header() en vóór session_start().
Er mag geen enkele output naar de browser vóór header() en vóór session_start().
Gewijzigd op 01/10/2012 19:48:20 door - SanThe -
Dat weet ik maar zoals ik al aanduide is dat het probleem niet. Ook als ik niet dingen echo om te debugge krijg ik een white page. Dit was alleen om aan te duide dat het probleem de session start is.
Zet dit bovenin:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
?>
Dat had ik al gedaan zoals aangeven ook in htaccess ik krijg geen error. Volgens google gooit de pagina een 500 error
Dan kijk je in de logfiles.
Dat heb ik ook gezet in me bericht der wordt niks gelogd over dit probleem.
Geen errors op het scherm en geen errors in de logfile. Heeft het script wel output ergens of werkt het gewoon en zie je niks?
Het script zelf draait ook niet na de session start maar wel ervoor dan kan bvb aangegeven worden door bestanden te maken.
Als ik de session start in de htaccess zet draait het hele script niet. Het is ook random heel soms krijg je een white page (1 op de 100)
Toevoeging op 01/10/2012 20:08:27:
Ik heb ook het session path al aangepast ik dacht misschien gaat het fout vanwege andere websites op de server maar dat verhielp het probleem niet. Het enige wat effect lijkt te hebben is dat als de server heel druk is komt de white page vaker voor dan is het bvb 1 op de 10 refreshes
Als ik de session start in de htaccess zet draait het hele script niet. Het is ook random heel soms krijg je een white page (1 op de 100)
Toevoeging op 01/10/2012 20:08:27:
Ik heb ook het session path al aangepast ik dacht misschien gaat het fout vanwege andere websites op de server maar dat verhielp het probleem niet. Het enige wat effect lijkt te hebben is dat als de server heel druk is komt de white page vaker voor dan is het bvb 1 op de 10 refreshes
als je het al over een server hebt waar andere websites "draaien" dan heb je het over een production server. Op een production server moet je sowieso geen code draaien waar je al van tevoren weet dat het fout is. Test het probleem op je eigen computer (developement server) en gebruik xdebug.
Jelle - op 01/10/2012 20:05:14:
Als ik de session start in de htaccess zet
Kan dat uberhaupt wel via htaccess??
Er wordt ten behoeve van session_start(); een bestand geschreven in een directory.Het is mogelijk dat jouw proces niet mag schrijven in de betreffende directory. Probeer met session_save_path een path te definieren waar je wel mag schrijven. Vul bij voorkeur even een relatief pad in want je weet misschien niet het volledige pad vanaf de root /
http://www.php.net/manual/en/function.session-save-path.php
Zet er 1 variabele en zoek naar het session bestand, dit is je check, niet echo 'a' op de verkeerde plaats. Met die echo 'a' krijg je een headers already sent error. Er mag ook geen lege regel (enter) voor session_start() staan.
http://www.php.net/manual/en/function.session-save-path.php
Zet er 1 variabele en zoek naar het session bestand, dit is je check, niet echo 'a' op de verkeerde plaats. Met die echo 'a' krijg je een headers already sent error. Er mag ook geen lege regel (enter) voor session_start() staan.
Gewijzigd op 01/10/2012 21:57:43 door Aad B
Er mag misschien geen lege regel geprint worden (output), maar er mag wel lege regels en ook andere code die geen output opleverd voor session_start() staan.
Zowel de fout als de problemen die je hebt bij het loggen komen me bekend voor: ze kunnen worden veroorzaakt door het overschrijden van een schijfruimtelimiet. Als er bij de aanroep van session_start() onvoldoende schijfruimte is, loopt het PHP-script vast op een "write failed: no space left on device".
De foutafhandeling bleek daarmee in mijn geval ook moeite te hebben, want er werd nogal onlogisch een "unknown error" gemeld op regel 0 (!) van een "unknown file". Wel logisch: voor het zelf opslaan van een logbestand is er bij het optreden van de fout op dat moment ook onvoldoende schijfruimte. Ik vond de fout uiteindelijk pas door set_error_handler() in te stellen op een functie die foutmeldingen mailt.
De foutafhandeling bleek daarmee in mijn geval ook moeite te hebben, want er werd nogal onlogisch een "unknown error" gemeld op regel 0 (!) van een "unknown file". Wel logisch: voor het zelf opslaan van een logbestand is er bij het optreden van de fout op dat moment ook onvoldoende schijfruimte. Ik vond de fout uiteindelijk pas door set_error_handler() in te stellen op een functie die foutmeldingen mailt.
@ward
Bedankt ik ga het proberen. Echter staat er nog 800gb vrij op de server dus het lijkt me sterk. Is er een soort van memery value wat de session handler maximaal mag gebruiken ofzo? Misschien is die vol aangezien het dus het meeste fout gaat als de server druk is. Of misschien is er een connection limit die die overschreden wordt door de session handler. In ieder geval ik ga je mailing optie proberen
Bedankt ik ga het proberen. Echter staat er nog 800gb vrij op de server dus het lijkt me sterk. Is er een soort van memery value wat de session handler maximaal mag gebruiken ofzo? Misschien is die vol aangezien het dus het meeste fout gaat als de server druk is. Of misschien is er een connection limit die die overschreden wordt door de session handler. In ieder geval ik ga je mailing optie proberen
In ons geval was het verkorten van de sessieduur met session_cache_expire() de oplossing. De fout trad namelijk vooral op bij intensief verkeer van robots die geen (sessie)cookies retourneren: daardoor startten ze aan de lopende band nieuwe sessies, waarvan de overgrote meerderheid feitelijk helemaal niet werd gebruikt.




