créer un document xml avec php

créer un document xml avec php - PHP - Programmation

Marsh Posté le 27-07-2009 à 11:37:46    

Bonjour à tous,  
 
J'ai pas mal navigué sur le web mais ne comprend rien et m'embrouille l'esprit. Alors voilà mon problème. Je souhaite créer un fichier XML avec PHP. Voici mon code pour créer le document XML.
 

Code :
  1. <?php
  2.   $doc = new DomDocument('1.0', 'iso-8859-1');
  3.   $sources = $doc->createElement('sources');
  4.   $doc->appendChild($sources);
  5.   $titres = array('Articles', 'Actualités', 'Scripts PHP', 'Scripts Flash', 'Les services MSG');
  6.   for ($i = 0; $i < strlen($titres); $i++)
  7.   {
  8.     $src_texte = $doc->createElement('texte');
  9.     $sources->appendChild($src_texte);
  10.     $src_texte_attribut = $doc->createAttribute('titre');
  11.     $src_texte->appendChild($src_texte_attribut);
  12.     $src_valeurAttribut = $doc->createTextNode("$titres[$i]" );
  13.     $src_texte_attribut->appendChild($src_valeurAttribut);
  14.   }
  15.   $doc->save('resultat.xml');
  16.   print $doc->saveXML();
  17. ?>


 
Voici l'erreur quand je lance la page :
Warning: DOMDocument::save(resultat.xml) [function.save]: failed to open stream: Permission denied in c:\travail\intranet\test.php on line 42
Warning: DOMDocument::saveXML() [function.saveXML]: output conversion failed due to conv error in c:\travail\intranet\test.php on line 43
Warning: DOMDocument::saveXML() [function.saveXML]: Bytes: 0xE9 0x73 0x22 0x2F in c:\travail\intranet\test.php on line 43
<texte titre="Actualit  
 
Voici le resultat de mon PHPINFO();
dom
DOM/XML  enabled  
DOM/XML API Version  20031129  
libxml Version  2.6.11  
HTML Support  enabled  
XPath Support  enabled  
XPointer Support  enabled  
Schema Support  enabled  
RelaxNG Support  enabled  
 
Comment dois-je faire? je suppose il faut que je dé commente une extension dans php.ini mais laquelle :  
;extension=php_mbstring.dll
;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_ifx.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
;extension=php_mssql.dll
;extension=php_msql.dll
;extension=php_mysql.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
extension=php_pgsql.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_sockets.dll
;extension=php_sqlite.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
 
MERCI beaucoup pour vos réponses.
 

Reply

Marsh Posté le 27-07-2009 à 11:37:46   

Reply

Marsh Posté le 27-07-2009 à 12:21:04    

Il faut faire un CHMOD 777 sur le dossier ou tu enregistre ton fichier xml, ici c'est la racine, je te deconseille de faire ce genre de CHMOD sur la racine donc crée un dossier spécial pour mettre ces fichiers et mets les autorisations sur 777.

Reply

Marsh Posté le 27-07-2009 à 13:42:05    

j'ai essayé mais j'ai toujours le même message d'erreur ... PERMISSION DENIED !

Reply

Marsh Posté le 27-07-2009 à 16:34:03    

Peut etre un safe mode ?
Au passage, ça c'est moche :

Code :
  1. $src_valeurAttribut = $doc->createTextNode("$titres[$i]" );


Mais ça, c'est mieux :

Code :
  1. $src_valeurAttribut = $doc->createTextNode( $titres[$i] );


 
Et indépendamment de cette erreur, essaye de faire des tests avec des is_writable, is_dir ... pour essayer de diagnostiquer le problème plus précisément ;)

Reply

Marsh Posté le 28-07-2009 à 15:27:49    

bool(false) et le fichier est accessible en écriture...
Je fais quoi avec ça car là je comprends pas tout. Avez-vous une idée

Reply

Marsh Posté le 28-07-2009 à 22:25:56    

jenny50 a écrit :

bool(false) et le fichier est accessible en écriture...


Ça ne veut rien dire ça, soit ca renvoie false et ce n'est pas accessible en écriture, soit ca renvoie true...

Reply

Marsh Posté le 29-07-2009 à 14:02:23    

Quand je fais un "is_writable" ça me renvoit "le fichier est accessible" et quand je fais un "is_dir" ça me renvoit "bool(false)"
 
C'est contradictoire mais c'est ça que j'ai !!

Reply

Marsh Posté le 29-07-2009 à 15:28:51    

essaye tout simplement de te servir de fwrite()


---------------
Recette cookeo Recette de cuisine
Reply

Marsh Posté le 29-07-2009 à 15:41:09    

voici mon code :  

Code :
  1. $filename = 'public/rh/test.txt';
  2. $fp = fopen($filename, 'w');
  3. fwrite($fp, '1');
  4. fwrite($fp, '23');
  5. fclose($fp);


 
et voici ce que ça donne :  
Warning: fopen(public/rh/test.txt) [function.fopen]: failed to open stream: Permission denied in c:\travail\test2.php on line 4
 
Warning: fwrite(): supplied argument is not a valid stream resource in c:\travail\test2.php on line 5
 
Warning: fwrite(): supplied argument is not a valid stream resource in c:\travail\test2.php on line 6
 
Warning: fclose(): supplied argument is not a valid stream resource in c:\travail\test2.php on line 7

Reply

Marsh Posté le 29-07-2009 à 15:54:30    

fwrite, c'est vieux, c'est mieux d'utilisé ,  file_put_contents
 
t'as essayé de creer d'hab un fichier vide a la main ?

Reply

Marsh Posté le 29-07-2009 à 15:54:30   

Reply

Marsh Posté le 29-07-2009 à 16:01:21    

Oui j'ai créé le fichier vide avant.

Reply

Marsh Posté le 29-07-2009 à 16:04:38    

t'es sous unix ou sous windows ?

Reply

Marsh Posté le 29-07-2009 à 16:06:15    

Reply

Marsh Posté le 29-07-2009 à 16:33:20    


IIs 6 ou iis 7 ?
 
Ps essaye depuis iis (si c'est le cas) d'aller dans les paramètre et sur la barre de gauche pour iis7 (changer les autorisations) et pard default cela devrait mettre les bonnes ;)


---------------
Recette cookeo Recette de cuisine
Reply

Sujets relatifs:

Leave a Replay

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