Problème PHP include dans les thèmes

JasminJasmin Member
juin 2009 modifié dans Bogues
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?

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour Jasmin

    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 du projet (2010 à 2018)

  • maramamarama Member
    Pourrais tu nous fournir par messagerie interne, des informations sur ton serveur, paramétrage ?
    Merci pour ce bug.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Je crois que cela doit etre lié au safe_mode. un petit coup de phpinfo nous le dira.

    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 du projet (2010 à 2018)

  • JasminJasmin Member
    <?php include(dirname(__FILE__).'/header.php'); ?> ne fonctionne pas.

    Voilà quelques paramètres :
    safe_mode -> Off
    safe_mode_gid -> Off
    safe_mod_include_dir -> no value
  • maramamarama Member
    C'est ce blog là ? http://jasmin.mocalyptus.net/
    Parce que ça marche non ?
    Peux tu nous indiquer comment tu as corrigé ça ?
  • JasminJasmin Member
    Je dois mettre le chemin complet dans les lignes include du thème : include('themes/defaut/header.php')

    Ça marche avec ça. Bref, pour mon serveur, ce sont tous les thèmes qui sont incompatibles, et non Pluxml en soit.
Connectez-vous ou Inscrivez-vous pour répondre.