Probleme simpleXML

Probleme simpleXML - PHP - Programmation

Marsh Posté le 29-01-2009 à 17:35:20    

Bonjour,
 
J'ai un gros soucis avec simpleXML.
En effet en local mon script fonctionne parfaitement, en revanche quand il est en ligne il fonctionne une fois sur 2...
Quand ce la ne fonctionne pas il ne m'affiche pas d'erreur mais seulement une page blanche comme si le script s'était arrêté de fonctionner tout de suite.
 
Voici mon script et cela vient de la ligne en rouge car si je commente tout sauf celle la le bug persiste.
 

Citation :

<?php
$chemin_xml = 'http://www.maximeladra.com/synchro_elab/xml/contacts.xml';
$liste = simplexml_load_file($chemin_xml);
 
foreach( $liste->contact as $contact)
 
{
 
 $prenom = $contact->prenom;
 $nom = $contact->nom;
 $dept = $contact->dept;
 $tel_dom = $contact->tel_dom;
 $tel_pro = $contact->tel_pro;
 $fax = $contact->fax;
 $adresse = $contact->adresse;
 $ville = $contact->ville;
 $cp = $contact->cp;
 $pays = $contact->pays;
 $login = $contact->login;
 $id = $contact->id;
 
echo $prenom;
echo $login;
 
}
 
?>


 
 
Merci d'avance pour votre aide !

Reply

Marsh Posté le 29-01-2009 à 17:35:20   

Reply

Marsh Posté le 29-01-2009 à 17:40:38    

Essaye en rajoutant le code ci dessous juste après le <?php :

Code :
  1. error_reporting(E_ALL);


Ca ne corrigera pas ton problème mais ça t'affichera au moins les erreurs et warning s'il y en a.
 
Existe aussi en variante encore plus stricte :

Code :
  1. error_reporting(E_ALL | E_STRICT);

Reply

Marsh Posté le 29-01-2009 à 17:47:39    

Aucune erreur affiche lorsque ça ne fonctionne pas.
Que dois je faire lol?


Message édité par solarius le 29-01-2009 à 17:48:02
Reply

Marsh Posté le 29-01-2009 à 17:49:34    

Et en faisant ca:
$liste = simplexml_load_file('$chemin_xml');  
 
J'ai rajouté les '

Reply

Marsh Posté le 29-01-2009 à 18:00:58    

Non cela ne fonctionne pas.
De plus il faut mettre les apostrophes quand on a un champs un caractères et non une variable^^

Reply

Marsh Posté le 29-01-2009 à 18:04:35    

aspirateur a écrit :

Et en faisant ca:
$liste = simplexml_load_file('$chemin_xml');  
 
J'ai rajouté les '

En faisant ça, il va essayer de lire le fichier qui s'appelle "$chemin_xml".
 
solarius > Fait un var_dump ou un print_r de $liste pour voir si t'as reçu quelque chose et si t'as reçu quelque chose, ce que t'as reçu.
 
 
Si tu vois qu'en fait ça n'arrive même pas au var_dump ou au print_r alors essaye de rajouter le code suivant juste après l'autre ligne.

Code :
  1. ini_set('default_socket_timeout',20);


Si ça marche, ça mettra une durée plus petite dans le temps d'attente maximum de la réponse de l'autre serveur et ça te permettra d'avoir toi même des infos si c'est un problème de timeout.

Reply

Marsh Posté le 29-01-2009 à 18:17:48    

Toujours le même problème.
 
Meme si je met juste çà:
 

Citation :

<?php
$liste = simplexml_load_file('$chemin_xml');
//ici une redirection header('Location .....  
?>


 
Toujours le même problème, rien ne se passe une fois sur deux.
Ca vient vraiment de cette fichu ligne : $liste = simplexml_load_file('$chemin_xml');
 
Une autre idée?

Reply

Marsh Posté le 29-01-2009 à 18:34:38    

A par le coup du ini_set, je vois pas quoi faire de plus.


Message édité par omega2 le 29-01-2009 à 18:35:01
Reply

Marsh Posté le 29-01-2009 à 18:43:06    

Existe t'il un autre moyen de charger se XML ou peut être une solution pour le télécharger d'abord sur le bon serveur avant de charger dans le script mais la je ne sais pas du tout comment m'y prendre.

Reply

Marsh Posté le 29-01-2009 à 18:48:57    

Ouais, tu as la méthode load_string ou un truc dans le genre. Bref tu fais file_get_contents de ton chemin, tu mets ca dans une string, tu peux afficher la string pour vérifier que tout est correct, puis tu balances ca en parametre à la méthode load_string.


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 29-01-2009 à 18:48:57   

Reply

Marsh Posté le 29-01-2009 à 19:20:22    

Bon j'ai importer le XML sur le bon serveur et cela fonctionne j'essaye de mettre au point un script qui télécharge le XML sur le serveur dans un dossier spécifique.
 
Cette ligne de code lance automatiquement le téléchargement du fichier mais je voudrais quelques chose de bien plus pousser comme par exemple que le fichier se télécharge directement dans un dossier prédéfinie.
Comment faire?
 

Citation :

header("Content-disposition: attachment; filename=http://www.maximeladra.com/synchro_elab/xml/contacts.xml" );

Reply

Marsh Posté le 29-01-2009 à 20:27:22    

Si page blanche et pas d'erreur affichée ça peut venir d'un problème de la capacité de mémoire allouable (par défaut 128 Mo je crois).
Augmente là à 256 Mo soit dans le php.ini, soit par init_set.

Reply

Marsh Posté le 29-01-2009 à 20:38:03    

Non ça de vient pas de la, le fichier et tout petit et j'ai déjà augmenter la mémoire pour voir.

Reply

Marsh Posté le 29-01-2009 à 21:50:06    

solarius a écrit :

Non ça de vient pas de la, le fichier et tout petit et j'ai déjà augmenter la mémoire pour voir.


 
A combien?
 
sinon ajoute ces lignes en début de script :
ini_set('display_errors','1');
ini_set('display_startup_errors','1');
error_reporting (E_ALL);

Reply

Marsh Posté le 29-01-2009 à 22:21:00    

Aucune erreur^^
 
Problème vraiment gênant pour moi...

Reply

Marsh Posté le 29-01-2009 à 22:45:27    

solarius a écrit :

Bon j'ai importer le XML sur le bon serveur et cela fonctionne j'essaye de mettre au point un script qui télécharge le XML sur le serveur dans un dossier spécifique.
 
Cette ligne de code lance automatiquement le téléchargement du fichier mais je voudrais quelques chose de bien plus pousser comme par exemple que le fichier se télécharge directement dans un dossier prédéfinie.
Comment faire?
 

Citation :

header("Content-disposition: attachment; filename=http://www.maximeladra.com/synchro_elab/xml/contacts.xml" );



Regarde du côté de CURL. Ca demande un peu plus de code mais ça permet de récupérer des fichiers. par contre comme simplexml_load_file marche une fois sur deux, je ne sais pas si ça sera une solution efficace.

Reply

Marsh Posté le 29-01-2009 à 23:20:33    

En faite si le fichier XML est sur le serveur même alors simplexml_load_file marche a chaque fois.
 
J'ai donc fait le code suivant que j'ai testé en local et sur mon deuxième hébergeur perso (1&1) pour récrire le contenue de l'XML du serveur et cela fonctionne parfaitement sauf sur le serveur ou je doit travailler...
Cela ne viendrais pas de quelques chose non activé dans le php.ini?
j'ai vérifier pour allow_url_fopen et c'est bien activé mais il y a peut être autre chose?
 
 

Citation :


<?php
function CopieFichier($Source, $Destination)
{
    $Fichier = fopen ($Source, "r" );
 
    $ContenuFichier ='';
 
    while (!feof($Fichier)) $ContenuFichier .= fread($Fichier, 8192);
    fclose ($Fichier);
 
    $Fichier = fopen ($Destination, "w+" );
 
    if ( !fwrite($Fichier, $ContenuFichier)) die('Impossible d\'écrire dans le fichier');
 
    fclose ($Fichier);
}
 
CopieFichier('http://www.maximeladra.com/synchro_elab/xml/contacts.xml', 'xml/contacts.xml');
?>

Reply

Marsh Posté le 29-01-2009 à 23:30:44    

Si c'était désactivé, ça ne marcherait jamais donc c'était forcément activé. ;)
Par contre qu'est ce qui pourrait faire que ça ne marche qu'une fois sur deux, je ne vois pas.

Reply

Marsh Posté le 30-01-2009 à 09:20:08    

Hey ça m'affiche une erreur quand je suis connecté depuis l'iut, et c'est là bas qu'il y a le serveur !
 

Citation :

ERROR
The requested URL could not be retrieved
 
While trying to retrieve the URL: http://147.210.152.201:10000/sugar [...] /index.php
 
The following error was encountered:
 
    * Zero Sized Reply  
 
Squid did not receive any data for this request.
 
Your cache administrator is colnay@iut.u-bordeaux3.fr.
Generated Fri, 30 Jan 2009 08:14:22 GMT by IUTsquid@iut.u-bordeaux3.fr (squid/2.6.STABLE6)

Reply

Marsh Posté le 30-01-2009 à 10:44:36    

Problème entièrement résolu, tout fonctionne parfaitement.
Cela était du au serveur apache qui fonctionnait très mal.
Nous avons redémarrer le serveur aujourd'hui ;)

Reply

Sujets relatifs:

Leave a Replay

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