Session_start crashed de pagina

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jelle -

Jelle -

01/10/2012 19:20:15
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
echo 'a';
session_start();
echo 'b';
?>

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 -
 
PHP hulp

PHP hulp

22/12/2024 06:38:20
 
- SanThe -

- SanThe -

01/10/2012 19:47:47
Quote Anchor link
Ongeveer al 1000 keer of meer behandeld:
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 -
 
Jelle -

Jelle -

01/10/2012 19:49:10
Quote Anchor link
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.
 
- SanThe -

- SanThe -

01/10/2012 19:52:26
Quote Anchor link
Zet dit bovenin:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

// rest
?>
 
Jelle -

Jelle -

01/10/2012 19:56:13
Quote Anchor link
Dat had ik al gedaan zoals aangeven ook in htaccess ik krijg geen error. Volgens google gooit de pagina een 500 error
 
- SanThe -

- SanThe -

01/10/2012 19:57:24
Quote Anchor link
Dan kijk je in de logfiles.
 
Jelle -

Jelle -

01/10/2012 20:00:34
Quote Anchor link
Dat heb ik ook gezet in me bericht der wordt niks gelogd over dit probleem.
 
- SanThe -

- SanThe -

01/10/2012 20:03:43
Quote Anchor link
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?
 
Jelle -

Jelle -

01/10/2012 20:05:14
Quote Anchor link
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
 
Flip --

Flip --

01/10/2012 20:17:07
Quote Anchor link
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.
 
Obelix Idefix

Obelix Idefix

01/10/2012 20:52:15
Quote Anchor link
Jelle - op 01/10/2012 20:05:14:
Als ik de session start in de htaccess zet

Kan dat uberhaupt wel via htaccess??
 
Aad B

Aad B

01/10/2012 20:56:41
Quote Anchor link
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.
Gewijzigd op 01/10/2012 21:57:43 door Aad B
 
Flip --

Flip --

01/10/2012 23:36:22
Quote Anchor link
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.
 
Ward van der Put
Moderator

Ward van der Put

02/10/2012 09:10:06
Quote Anchor link
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.
 
Jelle -

Jelle -

02/10/2012 09:20:54
Quote Anchor link
@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
 
Ward van der Put
Moderator

Ward van der Put

02/10/2012 10:04:24
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.