IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Bad header=echec malloc pour table: php-cgi.exe


Sujet :

Langage PHP

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut Bad header=echec malloc pour table: php-cgi.exe
    Bonjour,

    avec un jeu de données particulier (plus nombreuses que d'habitude) j'ai l'erreur 500 suivante sur un export qui fonctionne avec d'autres données :
    malformed header from script. Bad header=echec malloc pour table: php-cgi.exe, referer: http://localhost:81/recapitulatif/recapitulatif.php
    recapitulatif.php appelle Xport.php après avoir lancé l'export. Les logs PHP indiquent que Xport.php s'est bien terminé (et les fichiers créés semblent le confirmer) mais l'URL affichée dans le navigateur (IE11) est : /recapitulatif/Xport.php?numvacM=1&numvacA=1 (URL appelée depuis recapitulatif.php)
    Il y a une redirection JavaScript à la fin de Xport.php.

    Quand tout se passe bien les logs d'accès Apache sont comme suit :
    127.0.0.1 - - [10/Oct/2016:15:31:39 +0200] "GET /recapitulatif/Xport.php?numvacM=1&numvacA=1 HTTP/1.1" 200 4591
    127.0.0.1 - - [10/Oct/2016:15:33:05 +0200] "GET /js/jquery/jquery-2.1.4.min.js HTTP/1.1" 304 -
    127.0.0.1 - - [10/Oct/2016:15:33:05 +0200] "GET /js/repriseSession.js HTTP/1.1" 304 -
    127.0.0.1 - - [10/Oct/2016:15:33:05 +0200] "GET /js/MSAccessbox.js HTTP/1.1" 304 -
    127.0.0.1 - - [10/Oct/2016:15:33:05 +0200] "GET /js/launch_modal_popup.js HTTP/1.1" 304 -
    127.0.0.1 - - [10/Oct/2016:15:33:05 +0200] "GET /js/divers.js HTTP/1.1" 304 -
    127.0.0.1 - - [10/Oct/2016:15:33:05 +0200] "GET /js/navig.js HTTP/1.1" 304 -
    127.0.0.1 - - [10/Oct/2016:15:33:05 +0200] "GET /js/jquery-ui/jquery-ui.min.js HTTP/1.1" 304 -
    127.0.0.1 - - [10/Oct/2016:15:38:03 +0200] "GET /recapitulatif/XportTampon.php HTTP/1.1" 200 1504
    Quand il y a l'erreur, il n'y a que la première ligne.

    Je ne vois pas d'où peut provenir l'erreur ni où chercher, quelqu'un a une idée ?
    Christophe

    Pensez à mettre quand c'est le cas.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Consulte ton log d'erreur PHP : s'il y a une erreur PHP elle va s'intercaler dans les en-têtes HTTP.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    La ligne "error_log" du php.ini était commentée et je n'ai pas trouvé d'autres logs.
    J'ai ajouté cette ligne dans le php.ini mais le fichier n'a pas été créé.
    error_log = "C:\Program Files\OGC\Apache2.2\logs\error_php.log"
    Christophe

    Pensez à mettre quand c'est le cas.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    En mettant du code entre commentaires j'ai fini par trouver la fonction qui fait planter le serveur (il n'y a pas vraiment de gestion d'erreurs). Maintenant, il me reste à trouver ce qui ne va pas dans cette fonction.
    Christophe

    Pensez à mettre quand c'est le cas.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Mon application a bien un problème de mémoire. L'appel à la DLL seul fonctionne bien, mais au bout d'environ 640 appels il y a l'erreur malloc. J'ai fait une page de test (code ci-dessous) correspondant à ce que fait l'application.
    Les commandes suivantes ne changent rien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		$ffi = null;
    		unset($ffi);
    Mettre le new en dehors de la boucle ne change rien.
    Je ne peux pas passer l'application en PHP 5.3+ (elle est en 5.0.3) pour profiter du ramasse-miettes.
    L'option memory_limit dans le php.ini est déjà à 200M (). La passer à 500 ne change rien.

    A part passer par un script DOS (et donc retravailler en profondeur l'application), je ne vois pas de solution. Quelqu'un à une meilleur idée ?
    Y a-t-il un meilleur moyen d'appeler la DLL que l'extension ffi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <?php
    $DOSSIER = 'C:\OGC\test\\';
    $REP = $DOSSIER.'temp_genrsa2015';
    $EXT = '.txt';
    $CHAINAGE = 0;
    $intStatut = 1;
    $VERGENRSA = "11.6.6.6";
    $ficUM = 'C:/OGC/test/ium.txt';
    $dirTab ='C:/Program Files (x86)/OGC/rss2rsa/2015/tables';
    $bidon = $DOSSIER.'bidon';
     
    echo date('d-m-Y H:i:s').'<br/>';
     
    $repertoire = opendir($DOSSIER);
    while ($fichier = readdir($repertoire))
    {
    	//echo $fichier.'<br/>';
    	if (stripos($fichier, 'RSS') && stripos($fichier, $EXT) === false)
    	{
    		$ficEntree = $DOSSIER.$fichier;
    		$ficSortie = $DOSSIER.$fichier.'_RSA'.$EXT;
    		$ficLog = $DOSSIER.$fichier.'_log'.$EXT;
    		$ficLeg = $bidon.'_leg'.$EXT;
    		$ficSta = $bidon.'_sta'.$EXT;
    		$ficDiff = $bidon.'_diff'.$EXT;
    		$ficTra = $bidon.'_tra'.$EXT;
    		$ficumNM1 = $bidon.'_TmpnumNM1'.$EXT;
    		$ficumN = $bidon.'_TmpnumN'.$EXT;
    		$ficSejnonauto = $bidon.'_Sejnonauto'.$EXT;
     
    		$ffi = new ffi ("[lib='genrsa2015.dll'] int genrsa(char* ficEntree,char* ficSortie,char* ficLeg,char* ficSta,int chainage,char* ficDiff,char* ficLog,char* dirTab,char* ficUM,long statut,char* verGenrsa,char* ficTra,char* ficumNM1,char* ficumN,char* ficSejnonauto);" );
    		$result_DLL_2015 = $ffi->genrsa($ficEntree, $ficSortie, $ficLeg, $ficSta, $CHAINAGE, $ficDiff, $ficLog, $dirTab, $ficUM, $intStatut, $VERGENRSA, $ficTra, $ficumNM1, $ficumN,$ficSejnonauto);
    		$ffi = null;
    		unset($ffi);
     
    		echo 'R&eacute;sultat fichier ('.$ficEntree.') : '.$result_DLL_2015.'<br/>';
    	}
    }
    echo 'FIN';
     
    ?>
    Christophe

    Pensez à mettre quand c'est le cas.

Discussions similaires

  1. php-cgi.exe et variables de sessions
    Par isma92 dans le forum Apache
    Réponses: 7
    Dernier message: 24/02/2009, 11h29
  2. php-cgi.exe et $_SERVER['DOCUMENT_ROOT']
    Par isma92 dans le forum Apache
    Réponses: 4
    Dernier message: 24/02/2009, 10h48
  3. Erreur du php-cgi.exe avec installation de Zend Core
    Par __fabrice dans le forum Zend Studio
    Réponses: 11
    Dernier message: 15/04/2007, 15h55
  4. Réponses: 3
    Dernier message: 21/05/2006, 18h14
  5. [XML] DocBook et internationalisation(pour exploitation PHP)
    Par Devil Redneck dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 12/08/2005, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo