samedi 24 avril 2010

Internal Server Error 500 - ioncube résolu !

Après 3 jours d'incompréhension, j'ai trouvé mon problème d'Internal Server Error 500.

Voilà ma situation.
J'ai une application web (Php/MySQL) encodée avec ionCube.
Sur un hébergeur et que sur certaines pages, j'ai des erreur 500.
Lorsque je remplace les fichiers encodés par les fichiers sources, aucun problème.

Après avoir épluché des milliers de lignes de code, ligne par ligne, j'ai trouvé la fonction qui posait problème. Elle ressemblait à :

function img($url,$parametres=array()){
...
}
La page qui appelait cette fonction est une page non encodée et ressemblait à :


Surpris par le comportement de l'application, j'essaye de ne faire qu'un appel de fonction.


Et là, la page fonctionne.
C'est donc lorsque j'ai deux ou plusieurs appels à cette fonction, que le serveur apache affiche une erreur 500.
Dans le error_log d'apache j'ai :

[Sat Apr 24 03:11:22 2010] [error] [client X.X.X.X] Premature end of script headers: index.php, referer: http://www.mon-site.com/

Le problème venait de la déclaration de la fonction img(). La valeur par défaut "=array()" provoque une erreur au deuxième appel de cette fonction.

function img($url,$parametres=array()){

J'ai donc remplacé cette déclaration par :

function img($url,$parametres=null){

Maintenant tout fonctionne parfaitement, je peux faire autant d'appels à la fonction img() que je veux.


J'espère vous avoir aidé !


Aucun commentaire:

Enregistrer un commentaire