我的大多数网站都在我的根目录中。 在该目录中有“css”,“functions”,“images”文件夹。 当我在index.php或任何其他根文件中包含php文件时,一切正常。 它包括它很好并执行得很好。

但是当我做文件夹“博客”时出现问题。 所以这是一个全新的单独的根文件夹与CMS及其自己的“根”文件。 我尝试从主根目录中包含css或从主根目录中的“functions”文件夹中包含一些php文件,Everything会崩溃。 我知道我必须把它包含在../functions/myfile.com 但是这些文件包含一些其他文件,因此它无法正常工作,并且无法正确包含其他文件。

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

===============>>#1 票数:20 已采纳

您可以使用$_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不存在于其他域中,否则可能会将其标记为重复的站点。 话虽如此,您可能还想为只有 site1的 robots.txt文件添加一行:

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以查看结果。 我会将该文件放在include中,然后在页面上进行调试。

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

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

===============>>#2 票数:7

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

如果是这种情况,您只需要以正确的方式跟踪。 我们假设您的文件夹设置如下:

root
    includes
        php_scripts
            script.php
    blog
        content
            index.php

如果这是建议的文件夹结构,并且您尝试将“Script.php”文件包含到“index.php”文件夹中,则需要以这种方式包含它:

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

我这样做的方式是视觉。 我把我的鼠标指针放在index.php上(查看文件结构),然后每次我上去一个文件夹,我键入另一个“../”然后你必须确保你上去文件夹结构上面的文件夹你想要开始进入。 之后,它只是普通的文件夹层次结构。

===============>>#3 票数:2

上述答案都没有为我解决这个问题。 我做了如下(Laravel与Ubuntu服务器):

<?php
     $footerFile = '/var/www/website/main/resources/views/emails/elements/emailfooter.blade.php';
     include($footerFile);
?>

===============>>#4 票数:1

尽量不要使用相对路径。 使用通用include,将DocumentRoot服务器变量分配给全局变量,并从那里构造绝对路径。 或者,对于大型项目,请考虑实施PSR-0 SPL自动装载机。

  ask by FosAvance translate from so

未解决问题?本站智能推荐:

关注微信公众号