Maison  >  Questions et réponses  >  le corps du texte

Comment inclure des fichiers PHP situés à différents emplacements dans différents dossiers

<p>La majeure partie de mon site se trouve dans le répertoire racine. Dans ce répertoire se trouvent les dossiers "css", "functions" et "images". Lorsque j'inclus le fichier php dans index.php ou d'autres fichiers racine, tout fonctionne bien. Il contient et s'exécute correctement. </p> <p>Mais le problème survient lorsque je crée un dossier appelé "blog". Il s'agit d'un tout nouveau dossier racine séparé avec le CMS et son propre fichier « racine ». Lorsque j'essaie d'inclure du CSS de la racine principale ou un fichier php du dossier "functions" de la racine principale, tout plante. Je sais que je dois l'inclure en utilisant <code>../functions/myfile.com</code>. Mais ce fichier contient également d'autres fichiers, il ne fonctionne donc pas et n'inclut pas correctement les autres fichiers. </p> <p>Existe-t-il un moyen de résoudre ce problème ? </p>
P粉447002127P粉447002127447 Il y a quelques jours516

répondre à tous(2)je répondrai

  • P粉976737101

    P粉9767371012023-08-22 16:44:45

    Si je vous comprends bien, vous avez deux dossiers, l'un est l'endroit où se trouve le script php que vous souhaitez include dans l'autre dossier ?

    Si tel est le cas, il vous suffit de suivre correctement le chemin. Supposons que la structure de vos dossiers est la suivante :

    root
        includes
            php_scripts
                script.php
        blog
            content
                index.php

    Si c'est la structure de dossiers que vous avez proposée et que vous souhaitez inclure le fichier "Script.php" dans le dossier "index.php", vous devez l'inclure comme ceci :

    include("../../../includes/php_scripts/script.php");

    La façon dont je le fais est visuelle. Je place le pointeur de ma souris sur index.php (pour voir la structure des fichiers) et à chaque fois que je remonte dans un dossier, je tape un autre "../". Ensuite, vous devez vous assurer que vous montez dans la structure de dossiers au-dessus du dossier dans lequel vous souhaitez commencer à accéder. Après cela, c'est la hiérarchie normale des dossiers.

    répondre
    0
  • P粉614840363

    P粉6148403632023-08-22 09:38:21

    Vous pouvez accéder au $_SERVER['DOCUMENT_ROOT']répertoire racine depuis chaque site en utilisant . Juste pour tester, vous pouvez imprimer le chemin pour vous assurer qu'il fonctionne, si vous le faites correctement. Vous ne voulez certainement pas afficher le chemin du serveur local, par exemple contient et require .

    Site 1

    echo $_SERVER['DOCUMENT_ROOT']; //应该是 '/main_web_folder/';

    Les fichiers inclus sous le site 1 doivent se trouver à :

    echo $_SERVER['DOCUMENT_ROOT'].'/includes/'; // 应该是 '/main_web_folder/includes/';

    Site 2

    echo $_SERVER['DOCUMENT_ROOT']; //应该是 '/main_web_folder/blog/';

    Code actuel pour accéder aux fichiers d'inclusion du Site 1 à partir du Site 2 :

    include($_SERVER['DOCUMENT_ROOT'].'/../includes/file_from_site_1.php');

    Si vous essayez d'accéder à un fichier en excluant les document rootrootslashes, seul le chemin relatif au fichier sur lequel la requête est effectuée sera utilisé (non infaillible ni non spécifique à la plateforme) :

    include('../includes/file_from_site_1.php');

    Le chemin inclus n'a sa place dans aucun code sur le front-end du site (en ligne) et doit être utilisé en toute sécurité dans Environnements de production uniquement.

    De plus, pour les URL du site lui-même, vous pouvez les rendre relatives au nom de domaine. Les navigateurs remplissent automatiquement le reste car ils savent quelle page ils consultent. Alors n’utilisez pas :

    <a href='http://www.__domain__name__here__.com/contact/'>联系</a>

    Utilisez plutôt :

    <a href='/contact/'>联系</a>

    Pour un bon référencement, vous devez vous assurer que l’URL de votre blog n’existe pas sur un autre domaine, sinon il pourrait être marqué comme site en double. Dans ce cas, vous souhaiterez peut-être également ajouter une ligne au fichier pour le robots.txtSite 1 uniquement :

    User-agent: *
    Disallow: /blog/

    Autres possibilités :

    Recherchez votre adresse IP et incluez l'extrait de code suivant :

    function is_dev(){
      //使用来自Google的外部IP。
      //如果您在本地托管,它是127.0.01,除非您更改了它。
      $ip_address='xxx.xxx.xxx.xxx';
    
      if ($_SERVER['REMOTE_ADDR']==$ip_address){
         return true;
      } else {
         return false;
      } 
    }
    
    if(is_dev()){
        echo $_SERVER['DOCUMENT_ROOT'];       
    }

    N'oubliez pas que si votre FAI modifie votre IP, par exemple si vous avez une IP dynamique DCHP, vous devrez modifier l'IP dans ce fichier pour voir les résultats. Je recommande de mettre ce fichier dans un fichier d'inclusion, puis de l'exiger sur la page de débogage.

    Si vous avez accès à des méthodes modernes comme le Journal de la console de votre navigateur, vous pouvez utiliser le code suivant et l'afficher dans l'interface de débogage de votre navigateur :

    if(is_dev()){
        echo "<script>".PHP_EOL;
        echo "console.log('".$_SERVER['DOCUMENT_ROOT']."');".PHP_EOL;
        echo "</script>".PHP_EOL;       
    }

    répondre
    0
  • Annulerrépondre