【问题标题】:php Include and path to other filesphp 包含和其他文件的路径
【发布时间】:2013-06-11 18:10:15
【问题描述】:

当使用 php 包含函数时,我可以轻松地在多个页面上使用相同的代码,现在我遇到的问题是,我的包含文件、输出和图像。

随着调用包含的页面发生变化,包含调用的文件的位置也会发生变化。明白了吗?

示例: 我有一个名为“index.php”的文件。 我还有一个名为“load.php”的文件。 最后我得到了一个名为“/folder/index2.php”的文件

index.php 代码:<?php include("load.php"); ?>

index2.php 代码:<?php include("../load.php"); ?>

load.php 代码:<?php echo '<img src="image.png"/>'; ?>

加载 index.php 时,图像会按照应有的方式完美显示。 当加载位于另一个文件夹中的index2.php,但成功加载“load.php”文件时,图像说找不到,这是有道理的,因为index2.php正在调用图像,就好像它是在同一个文件夹中,它不是。

那么,有没有办法做到这一点?我试图避免使用完整的 url,但如果这是我使用它的唯一方法。我只是在寻找更好的选择。

【问题讨论】:

  • 你可以用http://youwant/这样的url定义像ROOT这样的常量,然后像include(ROOT."load.php");一样使用,include(ROOT."some/load.php");

标签: php php-include


【解决方案1】:

首先,尝试使用文档根目录指定您的 include 文件:$_SERVER['DOCUMENT_ROOT']... 这将始终指向公共根文件夹,因此无论您在站点的哪个位置,它都是相同的 - 当您开始包含本身include/require 其他文件的文件时,这特别有用...在这种情况下,一个包含的脚本本身包含相对的子脚本(../load.php|subfolder/load.php,等)永远不会从文件夹层次结构中的两个不同级别工作。

<?php include($_SERVER['DOCUMENT_ROOT']."/load.php"); ?>

然后对于在 html 中调用的资源,简单地使它们都相对于公共根目录:

<?php echo '<img src="/image.png"/>'; ?>

注意到图片src前面的/了吗?无论当前显示的页面在哪个文件夹中,它都会调用图像。

或者,您可以只指定绝对资源(尽管这并不理想,因为站点域更改会破坏资源链接):

<?php echo '<img src="http://www.yoursite.com/image.png"/>'; ?>

无论哪种方式,无论您调用什么脚本,它都将始终从正确的位置获取它(无需在您的 include 调用中添加 ../ 等)和图像/脚本/css/等无论他们被拉入哪个页面,都可以正常工作

【讨论】:

  • 这不是我想要的。负载的位置应该无关紧要。我正在寻找 load.php 文件中的修复程序
  • 我的回答的第二部分解释了如何指定链接资源,以便它们与文件夹无关。
  • 哈哈,是的,它确实做到了,那个破折号就是我想要的,非常感谢兄弟!我终于可以放心了,这已经困扰了我好几个小时了! :D
【解决方案2】:

$_SERVER['DOCUMENT_ROOT'] 表示包含中的当前公共根,如前所述。

图像源可以以斜杠开头:&lt;img src="/image.png"&gt; 告诉浏览器查看域根目录。提到的 src 会告诉浏览器检查 www.example.com/image.png,如果放在 www.example.com 下的任何文档或其任何子目录中。

编辑:Ben 的编辑速度更快

【讨论】:

  • +1 - 无论如何,您可能以更直接的方式回答。
【解决方案3】:

我建议制作一个 config.php

为完整路径使用变量,例如$imgPath = 'www.host.com/path/images/';

在每个页面的开头包含它,

在 load.php 中使用&lt;?php echo '&lt;img src="'.$imgPath.'image.png"/&gt;'; ?&gt;

现在,当您包含 load.php 时,您将不会有任何错误 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-28
    • 2011-11-24
    • 2014-04-24
    • 2018-06-10
    • 1970-01-01
    • 2019-04-21
    • 1970-01-01
    • 2015-12-06
    相关资源
    最近更新 更多