当 php 文件位于不同的文件夹中时,请包含它们

2022-08-30 19:43:10

我的大部分网站都在我的根目录中。在该目录中有“css”,“函数”,“图像”文件夹。当我在索引.php或任何其他根文件中包含php文件时,一切正常。它很好地包括它并执行它。

但是当我制作文件夹“博客”时出现问题。因此,这是全新的独立根文件夹,具有CMS及其自己的“根”文件。我尝试将主根目录中的css或“functions”文件夹中的一些php文件包含在主根目录中,一切都崩溃了。我知道我必须将其包含为.但是此文件包括一些其他文件,因此它将无法正常工作,并且无法正确包含其他文件。../functions/myfile.com

有没有想法如何解决这个问题?


答案 1

您可以使用 从每个站点内访问目录。对于仅测试,如果您以正确的方式进行,则可以回显路径以确保其正常工作。您永远不想显示包含和要求等内容的本地服务器路径$_SERVER['DOCUMENT_ROOT']

站点 1

echo $_SERVER['DOCUMENT_ROOT']; //should be '/main_web_folder/';

包括下站点一将在:

echo $_SERVER['DOCUMENT_ROOT'].'/includes/'; // should be '/main_web_folder/includes/';

站点 2

echo $_SERVER['DOCUMENT_ROOT']; //should be '/main_web_folder/blog/';

要访问的实际代码包括来自 site2 内部的 site1,您会说:

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

它只会使用执行查询的文件的相对路径,如果您尝试通过排除 斜杠和斜杠来访问它:document rootroot

 //(not as fool-proof or non-platform specific)
 include('../includes/file_from_site_1.php');

包含的路径在站点前端(实时)的代码中没有任何位置,应仅在生产环境中受到保护和使用。

此外,对于网站本身的URL,您可以使它们相对于域。浏览器将自动填充其余部分,因为它们知道自己正在查看哪个页面。因此,而不是:

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

您应该使用:

<a href='/contact/'>Contact</a>

对于良好的SEO,您需要确保博客的URL不存在于其他域中,否则它可能会被标记为重复的网站。话虽如此,您可能还想为机器人添加一行.txt文件,仅用于site1

User-agent: *
Disallow: /blog/

其他可能性:

查找您的 IP 地址并包含以下代码段:

function is_dev(){
  //use the external IP from Google.
  //If you're hosting locally it's 127.0.01 unless you've changed it.
  $ip_address='xxx.xxx.xxx.xxx';

  if ($_SERVER['REMOTE_ADDR']==$ip_address){
     return true;
  } else {
     return false;
  } 
}

if(is_dev()){
    echo $_SERVER['DOCUMENT_ROOT'];       
}

请记住,如果您的ISP更改了您的IP,例如您有DCHP动态IP,则需要更改该文件中的IP才能看到结果。我会将该文件放在包含中,然后要求它在页面上进行调试。

如果您可以使用现代方法,例如使用浏览器控制台日志,则可以执行此操作并在浏览器的调试界面中查看它:

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

答案 2

如果我理解正确,你有两个文件夹,一个包含你想要放入另一个文件夹中的文件的php脚本?include

如果是这种情况,您只需要以正确的方式沿着小径前进即可。假设您的文件夹设置如下:

root
    includes
        php_scripts
            script.php
    blog
        content
            index.php

如果这是建议的文件夹结构,并且您尝试将“脚本.php”文件包含在“索引.php”文件夹中,则需要按以下方式包含它:

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

我这样做的方式是视觉的。我将鼠标指针放在索引上.php(查看文件结构),然后每次我向上移动一个文件夹时,我都会键入另一个“../“然后,您必须确保在要开始向下进入的文件夹上方向上移动文件夹结构。之后,它只是普通的文件夹层次结构。


推荐