gros bug PHP linux avec include

gros bug PHP linux avec include - PHP - Programmation

Marsh Posté le 04-01-2008 à 13:38:04    

Bonjour,
depuis le 1er janvier j'ai un bug lorsque j'inclue un fichier en PHP avec la fonction include mais uniquement si j'appelle avec un lien HTTP.
Il m'arrivait de temps en temps d'avoir l'erreur PHP :
 

Code :
  1. PHP Warning:  main(http://www.domaine.com/fichier.inc) [<a href='function.main'>function.main</a>]: failed to open stream: Success in /home/site/public_html/dossier/index.php on line 127


 
Mais maintenant, Linux crée un fichier core.nnnn (n = chiffre) dans le dossier du fichier PHP à afficher (index.php) et la page web s'arrête là sans errreur PHP. Les fichiers font 0, 6 ou 8Mo.
 
Infos sur le système :
System     Linux sima.securenet-server.net 2.4.21-47.0.1.EL #1 Thu Oct 19 11:42:25 EDT 2006 i686
Build Date     Aug 10 2007 15:26:04
PHP Version 4.4.7
 
J'ai testé, je bug à chaque include en HTTP et pas en chemin relatif ou en local (/home/site/www/...).
 
D'où peut venir ce bug SVP ?

Reply

Marsh Posté le 04-01-2008 à 13:38:04   

Reply

Marsh Posté le 04-01-2008 à 13:40:53    

Peut etre que ce n'est pas un bug tout simplement ? Peut etre est-ce juste une configuration de ton module PHP ou d'apache ?

Reply

Marsh Posté le 04-01-2008 à 15:27:13    

la fonction allow_url_fopen de PHP est sur ON ce qui doit permettre l'inclusion via HTTP.
Il y avait des bugs si la page n'arrivait pas à charger via HTTP mais c'était rès rare et devait venir de lenteur du réseau.
Maintenant, c'est un vrai bug de Linux qui me fait les fichiers core.nnnn. Je ne sais pas comment analyser ces fichiers sous windows.

Reply

Marsh Posté le 04-01-2008 à 15:52:26    

montre nous ton code ce sera plus simple que de jouer aux devinettes ;)
 

Citation :

Maintenant, c'est un vrai bug de Linux qui me fait les fichiers core.nnnn.


 
les fichiers core.xxxx sont des dump mémoire qui sont ecrit lorsqu'une exception est levée et non "un vrai bug de Linux"  

Reply

Marsh Posté le 04-01-2008 à 17:37:23    

mon code est d'une simplicité extrême

Code :
  1. <?php include('http://www.monsite.com/fichier.inc'); ?>


dans une page HTML quelconque.
 
Ca plante quelque soit la page où est mis ce code (des dizaines de différentes).
l'URL peut être dirigée vers mon site ou un autre site, ça plante.
quelque soit le type de fichier à inclure ça plante (php, inc, txt...).
 
si je mets:

Code :
  1. <?php include('fichier.inc'); ?>
  2. ou
  3. <?php include('/home/site/www/fichier.inc'); ?>


ça marche impeccable.
 
Maintenant, je n'ai pas accès à l'OS du serveur mutualisé, j'ai juste récupérer des fichiers core.xxxx qui font 8Mo et dont je ne sais pas quoi faire.
Je me fait hébergé chez un petit hébergeur, le gérant ne sais pas quoi me dire, j'espère avoir un technicien qui regarde son install mais je préfère chercher le noeud du problème de mon côté.
Avant le 1er janvier, ça faisait un simple 'Warning' PHP, maintenant ça m'arrête l'affichage de la page à cette ligne sans aucun message d'erreur PHP et créé un fichier core.xxx.
 
 
 

Reply

Marsh Posté le 04-01-2008 à 17:55:41    

pierrickg > Si j'ai bien compris, tu cherches à inclure (par liaison http) un fichier situé à la racine de ton propre site. Si c'est ça, pourquoi ne fais tu pas simplement une inclusion par le système de fichier en utilisant le répertoire de base du site comme répertoire de position du fichier? (il y a plusieurs exemples du genre qui trainent sur le forum)
 
C'est une solution qui se montrera aussi simple, plus fiable (pas de risques de refut de connexion, de risque de "timeout", d'échec du à un changement de configuration d'apache ou d'un .htaccess, ... ) et moins consommatrice de ressource (ça pompe moins de ressource de lire directement un fichier que de demander à un autre programme de le lire et de retourner son contenu).

Reply

Marsh Posté le 04-01-2008 à 18:04:05    

omega2 : tu as tout à fait raison... pour l'instant c'est ce que j'ai fait et ça marche.
Mais j'aimerai comprendre comment résoudre le problème pour de prochaines applis en construction qui devront choper des fichiers xml et autres en fichiers distants.

Reply

Marsh Posté le 04-01-2008 à 18:22:51    

Essaye de voir ce que t'obtient quand tu inclus une page hébergé sur un autre serveur. Parfois certains serveurs sont réglé pour accepter les appels distants mais pas les appels locals.

Reply

Marsh Posté le 04-01-2008 à 20:29:11    

si j'inclus une page distante (un fichier txt d'un compte free.fr par ex), j'ai le même bug que si j'inclus un fichier local. Tant que c'est un protocol HTTP ça plante.

Reply

Marsh Posté le 05-01-2008 à 04:20:04    

C'est que le wrapper HTTP de PHP n'est pas disponible ou mal configuré sur ta machine. Le problème peut venir de:
- vieille version de PHP < 5,
- le wrapper n'a pas été compilé,
- le wrapper est inactif (voir php.ini).
 
Regarde ici pour connaître ta config actuelle: http://fr.php.net/manual/fr/functi [...] appers.php

Reply

Marsh Posté le 05-01-2008 à 04:20:04   

Reply

Marsh Posté le 05-01-2008 à 11:11:56    

OK, j'ai bien tenté la fonction pour connaître la config mais en PHP4 elle ne marche pas :-((
 
Je n'ai pas accès au php.ini et l'info sur le wrapper n'apparaît pas en lançant info().
Par contre, en regardant le résultats de info(), j'ai cette ligne :

Code :
  1. _ENV["HTTP_ACCEPT"] text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5


 
Je vais pousser mon hébergeur à passer à PHP5, si ça ne résoud pas le pb je tenterai de voir avec cette fameuse fonction.
En attendant il pourra au moins vérifier php.ini (il faut que je vois quelle ligne).
 
je ne sais pas si ça veut dire que je ne peux pas appeler des fichiers autres que ceux-là ??
 
Super nargy pour ces pistes !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed