SimpleXML chez 1and1
Envie de manipuler un peu de XML facilement avec SimpleXML en php, mais vous êtes hébergé en mutualisé chez 1and1.fr et vos scripts refusent de fonctionner… des interdictions dans tous les sens, des fonctions non prises en charges, l’impression d’être attaché avec des menottes dans le dos?
Voici la petite procédure à suivre:
D’abord il est probable que votre hébergement soit encore en php4 par défaut alors que php5 est installé. Or SimpleXML est une composante de php5.
Pour activer le support de php5, placer un fichier .htaccess dans votre dossier (où à la racine de votre site) avec dedans:
AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php
Cela permet d’activer l’interpréteur php5 pour les fichiers php.
Puis on se rend compte que la fonction simplexml_load_file a été désactivée car « la directive allow_url_fopen est sur Off dans la configuration de PHP ».
C’est bien dommage car cette fonction est très efficace pour charger un fichier xml en tant qu’objet xml. La FAQ de 1and1 conseille plutôt d’utiliser la fonction fsockopen (toute bridée) et implicitement de passer par simplexml_load_string ensuite. Ils donnent même un exemple bien poussif pour utiliser fsockopen chez 1and1. Il n’en reste que cette solution est bien trop lente et surtout bien trop lourde (en testant leur solution, charger un fichier xml en objet est à vue d’oeil 50 fois plus lent que par simplexml_load_file).
On va donc faire fit de cette solution et activer la directive allow_url_fopen = On. Il suffit pour cela d’ajouter un fichier php.ini dans le répertoire où s’exécutent vos scripts en mettant dedans la ligne
allow_url_fopen = On
Ainsi il est possible de charger un fichier distant avec simplexml_load_file.
Recommandations:
- Veillez à bien sécuriser vos scripts afin que l’on ne puisse utiliser à votre insu cette fonctionnalité pour charger du contenu ou des scripts.
- Et puis veillez à optimiser vos scripts pour qu’ils soient efficaces et qu’ils consomment le moins de ressources possible afin de ne pas vous faire taper sur les doigts (coupure du site, mise sur un serveur poubelle) par 1and1.
Aucun trackback pour l'instant
about 1 year ago - 2 commentaires
Voici une librairie PHP que je viens d’utiliser tout récemment pour générer automatiquement un fichier PDF (à sauvegarder ou imprimer) en sortie d’un formulaire en ligne, reprenant les informations entrées dans ce formulaire. FPDF est une classe PHP qui permet de générer des fichiers PDF en pur PHP, c’est-à-dire sans utiliser la librairie PDFlib. Le More >
about 2 years ago - 5 commentaires
TimThumb est un petit script php bien pratique qui permet de retailler à la volée des images. Cela permet notamment de faire des vignettes (thubnails) assez facilement. Il supporte les images de type jpeg, gif et png, il fonctionne avec GD Lib et php à partir de la version 4.3. Concrètement comme fonctionne-t-il? Tout simplement More >
about 2 years ago - 4 commentaires
J’utilise au quotidien les services OpenDNS pour les résolutions de noms de domaine, histoire de remplacer les serveurs DNS poussifs de mon FAI Neuf. Les serveurs DNS de neuf sont souvent très lents et parfois indisponibles et on ne sait pas avec quelle logique ils sont gérés, ceux de Cegetel où j’étais avant la fusion More >
about 2 years ago - 1 commentaire
Alors voilà, je devais faire un petit site web pour un ami. Pour l’hébergement, je lui recommande 1and1.fr en hébergement linux Pack Perso Initial (amplement suffisant pour son site et bon marché). Son site doit tourner avec WordPress arrangé en CMS, donc devant utiliser PHP et une base de donnée MySQL (d’où l’hébergement Linux). Que More >
about 2 years ago - Aucun commentaire
En réponse directe et rapide (à croire qu’ils ont senti venir le coup) aux nouvelles offres de serveurs dédié de dédibox, OVH renouvelle son offre 2008 et la rebaptise « 2008 Reloaded« . Au programme: la gamme Kimsufi passent à 1Go de ram minimum (quel soulagement par rapport aux 256Mo…), et le stockage passe de 160 à More >
about 2 years ago - 1 commentaire
Dedibox agrandit sa gamme de serveurs dédiés pour se diversifier des serveurs d’entrée de gamme (architecture Via) qui l’ont fait connaître sur le marché et se placer en concurrence plus frontale avec les offres de dédiés d’OVH Voici les spécs rapides des machines:Processeur: Intel® Core® 2 Duo T7200Architecture: Double coeur – 32 / 64 Bits More >
about 2 years ago
Décidément, rien n’est simple avec 1&1 ! Merci pour le tuyau.
about 1 year ago
J’ai voulu installer phpBB3 sur mon hébergement 1&1, j’ai suivi tes instructions, malheureusement ça ne fonctionne pas, phpBB me dit toujours que allow_url_fopen est désactivé. Pourtant j’ai bien placé un .htaccess et un php.ini comme précisé. Que faire ?
about 1 year ago
Alors je pense que ton problème est du au fait que ce qui est défini pour un dossier avec un fichier php.ini ne s’hérite pas dans ses sous-dossiers. Et à mon avis, phpBB étant plutôt une usine à gaz, il doit y avoir pas mal de sous-dossiers.
Tu as donc le choix:
- soit de copier ce fichier php.ini dans tous les sous-dossiers
- soit de repérer les fichiers PHP qui font des appels distants avec des fonctions comme fopen/fsockopen/simplexml_load_file, etc… et d’y mettre une copie du fichier php.ini dans leur dossier respectif (ce qui est peut-être plus prudent)
La troisième solution (plus aisée) consistait à utiliser la commande « suPHP_ConfigPath » dans le fichier .htaccess afin de faire répercuter la config de php.ini automatiquement dans les sous-dossiers. Mais elle ne semble pas fonctionner chez 1and1 et retourne une erreur 500 (le module suexec ne doit pas être activé sur le serveur pour raison de sécurité).
Attention: phpBB a régulièrement des failles et comme une partie des webmasters n’applique pas systématiquement les patchs de sécurité, les forums phpBB sont souvent la cible des hackers en herbe, voire de scans automatiques. Or comme tu ajoutes la possibilité avec allow_url_fopen à ton hébergement de pouvoir appeler et charger des pages externes, ouvrir des connexions ftp et autre, si jamais un hacker trouve une faille dans tes scripts, il peut alors faire beaucoup de mal (notamment s’en servir pour aller attaquer d’autres sites) et si cela t’arrives tu risques fort de te faire dégager par 1and1 avec des méthodes plutôt expéditives.
Je préfère te prévenir pour que tu saches ce que tu fais en activant allow_url_fopen.
about 9 months ago
Merci, ca va mieux comme ca ! Mon script me renvoie encore des erreurs mais plus celle concernant une fonction inconnue / illegale.
Par hasard, aurais-tu aussi un exemple simple de parser xml qui marche sur 1&1 ?
about 6 months ago
Perso je les fais moi-même les parseurs, car avec les fonctions de base c’est tellement simple (d’où le nom).
http://www.php.net/manual/fr/ref.simplexml.php
Pas besoin d’utiliser des fonctions complexe pour faire juste du parsing: la fonction simplexml_load_file ou simplexml_load_string, puis une petite boucle pour récupérer les données, les traiter, mettre dans un array ou juste les afficher…
Exemple:
$urlfichier = "http://feeds2.feedburner.com/programme-television?format=xml";$xmlorigin = @simplexml_load_file($urlfichier);
$nomchannel = $xmlorigin->channel->title;
echo $nomchannel.":\n";
foreach ($xmlorigin->channel->item as $item) {
echo $item->title."\n";
}