当资源路径是相对路径时,无法使用 include 函数

2023-12-27

背景:我目前对 PHP 和动态生成内容非常陌生,我正在使用 PHPStorm 并使用 XAMPP 的 PHP 解释器与 PHPStorm 的内置 Web 服务器相结合。

问题:我最近学会了一个非常方便的功能include()有了这个,我现在动态地包括我的:头部内容、导航和页脚。当我在根目录的index.php 中执行此操作时,效果很好,因为我对导航中的图像和脚本路径等内容使用相对路径。

但是,当我为新页面(目录)创建一个文件夹(例如“文章”),然后在其中创建一个使用相同包含函数的 index.php 时,使用相对路径的资源将无法获取其资源文件,因为我现在是 1 个目录深,并且相对路径是从我包含的文件中指定的?

例如在我的 navigation.html 中我有<img alt="Logo" title="Logo" src="img/brand/Logo.png">这将在服务器的根目录中起作用,因为路径是正确的,但包含在文档中的路径更靠下的文件夹则不然。

有人可以解释一下使用包含导航时的最佳实践吗?我唯一能想到的就是复制我包含的库,并制作一组相对路径,这些相对路径返回 +1 目录,以便在必须包含的页面上使用在文件夹内


PHP 使用相对于本地服务器计算机的路径,而 HTML 使用相对于本地服务器计算机的路径。website。它们在运行时的定义方式存在根本差异。

PHP

如果您使用 PHP,您应该养成这样的习惯NOT使用相对路径at all但要使用绝对路径,这将保证每次都成功(只要目标文件存在并且可访问等)。

so; use $_SERVER['DOCUMENT_ROOT']

作为旁注,你do not需要使用括号includes/requires,它只是给服务器更多的工作要做,而没有额外的好处。

The $_SERVER['DOCUMENT_ROOT']是 PHP/Web 应用程序的基目录,通常是文件夹的内容public_html/.

HTML

HTML 也使用文档根,但有一种更简单的方法可以通过键入 PHP 来引用它们$_SERVER每次都有变量。

在 HTML 中引用其他文件/媒体时,您应该避免文档相对路径,而是将每个路径设置为网站根目录相对而言,这可以通过以斜线开头每个文件/图像请求来轻松完成(/)这表明浏览器应该从基本 HTML 目录开始查找。

File: logo.png
地点:www.site.com/images/logo.php

从以下位置获取文件www.site.com/greatholidays/index.php意味着你需要../images/logo.png但是在 PHP 中包含一些引用该文件的 HTML(例如标头包含)将意味着该调用无法在www.site.com/index.php页;因此,只需在每个引用调用之前加上斜杠即可:

../images/logo.png ==> Becomes ==> /images/logo.png
                                 ^^^
                       Tells the browser to look from the base directory. 

Example:

  • 包含文件:/public_html/inc/nav.php

     <a href="/index.php">Home</a>
     <a href="/cabbages.php">My Collection of Giant Cabbages</a>
     <a href="/horse/whyIlovehorses.php">Why I love horses</a>
    
  • 文件包含是从以下位置调用的:www.site.com/index.php ~ /public_html/index.php

     <html>
         <body>
         <main>
             <nav>
             <?php include $_SERVER['DOCUMENT_ROOT']."/inc/nav.php"; ?>
            </nav>
         </main>
        ...
    

    在上面的例子中,无论在哪里nav.php文件由 PHP 调用或显示 HTML 输出的位置, nav 元素中引用的链接将始终到达相同的位置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当资源路径是相对路径时,无法使用 include 函数 的相关文章

  • Javascript 字符串/整数比较

    我在 HTML 中存储一些客户端参数 然后需要将它们作为整数进行比较 不幸的是我遇到了一个我无法解释的严重错误 该错误似乎是我的 JS 将参数读取为字符串而不是整数 导致我的整数比较失败 我生成了一个错误的小例子 我也无法解释 运行时以下返
  • 将我的 JSON 字符串格式化为 PHP 中的
      有序列表

    我正在为一个宠物项目开发一个简单的 CMS 我目前有一个 JSON 字符串 其中包含菜单结构的页面 ID 和父页面 ID 的列表 我现在想将此字符串转换为嵌套或分层列表 有序列表 我尝试过循环查找 但似乎最终得到了过于复杂的子类范围 我正在
  • 在 foreach 循环中使用 next

    我正在使用 foreach 循环数组 在特定情况下 我需要在迭代到达下一个元素 如预测 之前知道下一个元素的值 为此 我计划使用该功能next http www php net manual en function next php 在文档
  • 将数组值翻转为数组键的函数? [复制]

    这个问题在这里已经有答案了 有没有一个php函数可以接受下面的数组 array size 4 1 gt string 0 6 gt string 1 7 gt string 1 8 gt string 7 将其翻转到下面的数组 请注意 数组
  • Bootstrap 页脚不在底部

    我试图强制我的页脚位于网站底部 我不希望它在滚动时粘住 只是在向下滚动网页时出现在底部 目前 网页显示时页脚位于内容下方 我添加了这样的代码bottom 0 并发现它粘住了并且不适合我的网站 我还添加了这样的代码html body heig
  • file_get_contents:即使出现错误也能获得完整响应

    是否有可能使file get contents即使发生错误也显示实际响应 否则很难调试 例如 假设您有以下代码 url https api twitter com oauth request token data array options
  • Outlook 2007 接收 html 邮件作为带有标头的源,其他 MUA 工作正常。为什么?

    我有几个简单的表单 可以发送纯 html 电子邮件 大多数客户端 Gmail Lotus Notes 8 hotmail live windows live mail outlookexpress 都能正常接收电子邮件 但 Outlook
  • 在 Woocommerce 结帐页面上移动亚马逊按钮

    我需要移动 Woocommerce 结账页面上的 Amazon Pay 消息 按钮 我们正在使用Woocommerce 的亚马逊支付 https woocommerce com products pay with amazon 当我查看插件
  • 通过标记或JS强制下载

    假设我在 CDN 来自 Rackspace 的云文件 上有一个文件 以及一个包含该文件链接的静态 html 页面 有什么方法可以强制下载此文件 以防止它在浏览器中打开 例如 mp3 我们可以让我们的服务器读取该文件并将相应的标头设置为 he
  • 为什么 jQuery 对损坏标记的解释与浏览器不同?

    我之前已经回答过这个问题 https stackoverflow com a 19101905 1253312 但我并不完全理解why答案是正确的 答案的要点 p p function jqrender html a href http w
  • 在 PHP 中,如何检查函数是否存在?

    如何检查该功能是否可用my functionPHP 中已经存在 Using function exists http php net function exists if function exists my function my fun
  • 将jQueryUI datepicker附加到div(显示位置错误)

    我在输入上使用 jQueryUI datepicker 默认情况下 jQueryUI 会附加 ui datepicker div to the body该文件的 有问题的输入位于屏幕上的 弹出 div 中 这意味着该 div 之外的任何点击
  • 为什么在这个数组中 NULL 递减而不是负数?

    我已经尝试过这段代码 a array fill 0 4 NULL a 0 a 1 a 2 a 3 var dump a Result array 4 0 gt int 1 1 gt int 1 2 gt NULL 3 gt NULL 为什么
  • 将“http://”添加到尚未包含“http://”的 URL 前面

    我有一个input保存 URL 的字段 我希望这个保存的输入能够识别变量开头不存在 Http 但不知道从哪里开始 是否可以仅检查字符串的一部分 然后有一个在必要时追加的函数 如果您还想允许 https 我会使用如下正则表达式 if http
  • 持续运行的 C# 代码 - 服务还是单独的线程?

    我有一个 NET 4 Web 应用程序 它有 3 个关联的独立项目 DAL BAL 和 UI 我正在使用实体框架进行数据库交互 我有代码循环遍历一堆数据库数据 根据找到的内容调用方法 然后更新数据库 我希望这段代码一直运行 同时 我希望用户
  • Laravel 5 中的两个登录表单

    我一直想知道如何在 laravel 5 中制作两个登录表单一段时间 原因是因为我有一个多站点项目 我在一个项目中拥有管理站点和公共站点 我对路由进行了分组 以便管理路由回答一个域 公共路由回答另一个域 如下所示 Route group ar
  • 如何在网页上显示进度条直到网页完全加载?

    我想在网页中显示进度条 加载弹出窗口 直到页面完全加载 我的网页很重 因为它包含一个 HTML 编辑器 这是一个基于 jQuery 的 HTML 编辑器 需要很多时间才能完全加载 在加载时 我希望在页面上显示一个进度条 该进度条将在整个页面
  • Android:Html 锚链接仅在 Web 视图中有效一次

    在使用锚链接加载 html 内容时 我在 webview 中遇到一些奇怪的问题 以下代码非常适合锚标记 但是只有一次 第二次当我按下锚标签时不工作 protected void onCreate Bundle savedInstanceSt
  • CSS 链接图像带有下划线(“a”显示设置为阻止)

    我有一个菜单 我希望每个单独的项目中文本周围的所有空间都能将用户带到指定的页面 我在网上查了一下 发现最好的解决方案是将 a 显示设置为阻止 如下 a display block height 100 text decoration und
  • 如何在流体宽度表中使用省略号而不使每列大小相同?

    假设我的表中的列是id name description and phone The description列的长度为 1 255 个字符 但 id 最多只有 3 个字符 我希望列的大小适当 而不是每列的大小相同 我想要descriptio

随机推荐

  • 如何创建 PSObject 对象的新克隆实例

    我想创建自定义 PSObject 的新实例 我有一个创建为 PSObject 的 Button 对象 我想创建一个新对象 Button2 它具有与 Button 相同的成员 但我找不到一种方法如何克隆原始对象而不在原始对象中引用它 如果我更
  • 使用winapi查找进程ID和基地址

    我正在 Code Blocks 中编写一个程序 它会简单地打印应用程序的进程 ID 和基地址 PID 找到正确 但我在基地址方面遇到困难 而且我正在使用 GNU GCC 编译器 x64 我的猜测是错误在于HANDLE hSnap Creat
  • MySQL 数据库中字符的 UTF-8 问题(例如 é 为 é)

    我知道有数百个关于 UTF 8 问题的问题 但我尝试了所有能找到的方法 但没有一个有帮助 事实 我正在尝试读取一个包含 从我的 MySQL 数据库并将其显示在 PHP 页面上 实际上 它确实显示为 但字体无法识别它 因此使用另一种默认字体
  • 将 emacs(aquamacs) 与 python 3.2 一起使用

    mac osx Snow leopard 上的默认 python 版本是 python 2 6 1 我正在学习 python 3 所以我必须更改解释器 我已经更改了偏好设置 以便它指向 Library framework python fr
  • 在android中使用Activity的有效方法是什么

    我只是想问什么是有效的使用活动的方式 意味着将一项活动用于多种功能 或者将多项活动用于每种功能 在我的应用程序中 工作类似于类别 gt 子类别 gt 产品列表 其中方向改变设计并且还需要消耗以前的功能状态用于返回 Thanks 根据活动文档
  • Selenium 等待 Ajax 内容加载 - 通用方法

    Selenium 是否有一种通用的方法来等待所有 ajax 内容加载完毕 不绑定到特定网站 所以它适用于每个 ajax 网站 您需要等待 Javascript 和 jQuery 完成加载 执行 Javascript 检查是否jQuery a
  • 从 URI 获取图像宽度和高度

    是否可以从图像文件的 URI 获取其宽度和高度 我试图使用这段代码 但出现了错误 getAbsolutePath 之后有语法错误 标记 上存在语法错误 ArgumentList 无效 private void getDropboxIMGSi
  • Iphone 上的 OpenGL ES - 显示和旋转 3D 对象

    我是 Iphone Xcode 和 openGL ES 的新手 我正在寻找一个源代码示例 演示如何创建 3D 对象 用手势旋转它以及放大 缩小 谢谢 亚历克斯 以下是如何显示和旋转使用 Blender 创建的 3D 模型的简单示例 http
  • nextjs链接组件插值错误

    我在 Next js 中收到此错误 错误 提供的 href subject subject 值缺少要正确插入的查询值 subject 阅读更多 https err sh vercel next js href interpolation f
  • 使用 static const 结构对相关的类常量进行分组 (C++11)

    使用以下 A 的缺点是什么 h class SomeClass static const struct ConstantGroup int a 1 string b b etc CONSTANT cpp const SomeClass Co
  • 如何在android中的视图上方添加阴影

    我有一个观点 那就是作为页脚标题来服务 它只是一个视图 您可能会将其视为按钮 文本视图或布局 我对任何事物都持开放态度 这是 XML
  • Ruby 类:初始化 self 与 @variable

    有人可以解释在定义类时初始化 self 和使用 variables之间的区别吗 这是一个例子 class Child lt Parent def initialize self stuff self stuff stuff super en
  • 如何安装 Six.moves.xmlrpc_client?

    我正在从 openstack 复制一些代码片段 但是当它运行时 import six moves xmlrpc client as xmlrpclib 我收到以下错误 import six moves xmlrpc client as xm
  • ItemizedOverlay 和 Overlay 类之间的区别

    有人可以告诉我何时使用 Overlay 或何时使用 Itemized Overlay 类 这两个类有什么区别 绘制方法做同样的事情吗 我可以在我的项目中仅使用 ItemizedOverlay 类吗 或者我必须使用 Overlay 作为基类
  • 如何排除故障:对“非虚拟 thunk to ...”的未定义引用

    我正在尝试找出如何进一步解决此问题 我还想知道如何安装更新版本的 ld 如果有意义的话 所有参与的包管理器都告诉我我是最新的 该代码在 ubuntu 12 04 和 12 10 上使用 g 4 7 2 进行编译 链接和运行 但在 FC17
  • 使用 Ignore.NotFound 延迟加载 NHibernate

    我有一个 Candidate 对象的映射 如下所示 References x gt x Country Column CountryId NotFound Ignore 这里的问题是 如果我选择 Candidates 我会为每个人获得一个额
  • 如何重新运行失败的测试并为 python3 py.test 设置重试

    我有一些与 Web 服务相关的测试 这些测试发送 http 请求 并且响应由 py test 测试用例验证 我通常会在 50 次测试中遇到 1 到 2 次失败 这些测试是由于间歇性缓慢的 Web 服务器响应收集或网络原因而失败 有没有一种方
  • 通过 highcharts 中的配置禁用系列

    我有一个包含多个系列的折线图 当一次查看所有图表时 图表很混乱 所以我想最初隐藏某些系列 我知道我可以通过编程方式关闭系列 但是在初始化图表时有没有办法做到这一点 相信有一个配置选项可以实现这一点 在系列中 设置 visible false
  • SQL Server作业动态调度

    我有一组 SQL Server 作业 我希望它们的时间表是动态的 即我希望下一个运行日期来自表 我尝试过更新next run date in the sysjobschedules表和next scheduled run date in s
  • 当资源路径是相对路径时,无法使用 include 函数

    背景 我目前对 PHP 和动态生成内容非常陌生 我正在使用 PHPStorm 并使用 XAMPP 的 PHP 解释器与 PHPStorm 的内置 Web 服务器相结合 问题 我最近学会了一个非常方便的功能include 有了这个 我现在动态