Problème PHP include dans les thèmes
Bonjour à tous,
Je ne sais pas si quelqu'un en a déjà parlé, j'ai fouillé longtemps et je n'ai rien trouvé. Voilà, je viens d'installer la version 4.1 beta de Pluxml sur mon serveur, tout s'est déroulé sans problème, mais le thème ne s'affiche pas. Quand j'affiche le code source de la page, ça débute avec <div id="page">. Après une bonne heure de bidouille, j'ai remarqué que le fichier home.php du thème contient des lignes include pour inclure les différentes parties de la page, dont l'entête. J'ai compris que mon serveur ne cherche pas les fichiers dans le dossier du thème, mais plutôt à la racine de Pluxml. J'ai modifié les lignes include en ajoutant le chemin complet du thème, par exemple themes/defaut/header.php. J'ai dû faire les modifications pour les fichiers home.php, article.php, categorie.php et static.php.
Est-ce normal? Est-ce qu'il y a un autre moyen de corriger cela?
Je ne sais pas si quelqu'un en a déjà parlé, j'ai fouillé longtemps et je n'ai rien trouvé. Voilà, je viens d'installer la version 4.1 beta de Pluxml sur mon serveur, tout s'est déroulé sans problème, mais le thème ne s'affiche pas. Quand j'affiche le code source de la page, ça débute avec <div id="page">. Après une bonne heure de bidouille, j'ai remarqué que le fichier home.php du thème contient des lignes include pour inclure les différentes parties de la page, dont l'entête. J'ai compris que mon serveur ne cherche pas les fichiers dans le dossier du thème, mais plutôt à la racine de Pluxml. J'ai modifié les lignes include en ajoutant le chemin complet du thème, par exemple themes/defaut/header.php. J'ai dû faire les modifications pour les fichiers home.php, article.php, categorie.php et static.php.
Est-ce normal? Est-ce qu'il y a un autre moyen de corriger cela?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
J'ai déjà rencontré ce problème.
La solution est de remplacer les lignes include de cette façon
<?php include('header.php'); >
par
<?php include(dirname(__FILE__).'/header.php'); ?>
(idem pour les includes des autres fichiers, à faire sur le même principe)
A ta question est-ce normal: pour moi oui car cela doit être lié au paramétrage de ton serveur. Et j'ai même envie de dire que c'est très bien comme ça. Pour moi un fichier include devrait toujours être appelé avec un dirname(__FILE__) devant. J'avais lu y a quelques temps un audit sur la sécurité, où il était dit que c'était déconseillé de faire des includes du genre <?php include('header.php'); > sans spécifier le vrai chemin d'accès au fichier (qu'on obtient ici grâce à l'instruction dirname(__FILE__) car si le serveur est mal paramétrer ou qu'on arrive à détourner l'inclusion du fichier, on ouvre alors une faille de sécurité. Donc dans ton cas, même si tu vas devoir retoucher les fichiers du thème, c'est très bien comme ça.
Voilà pour l'explication technique ;-)
Stéphane
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Merci pour ce bug.
Jasmin si tu peux nous confirmer: est-ce que ton serveur est paramétré avec safe_mode = on
Et si tu as accès au php.ini peux-tu nous donner la valeurs de ces paramètres:
safe_mode
safe_mode_gid
safe_mode_include_dir
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Voilà quelques paramètres :
safe_mode -> Off
safe_mode_gid -> Off
safe_mod_include_dir -> no value
Parce que ça marche non ?
Peux tu nous indiquer comment tu as corrigé ça ?
Ça marche avec ça. Bref, pour mon serveur, ce sont tous les thèmes qui sont incompatibles, et non Pluxml en soit.