【问题标题】:How do you use a require_once header for items in a different folder?如何为不同文件夹中的项目使用 require_once 标头?
【发布时间】:2011-11-23 06:47:41
【问题描述】:

我对我网站的所有页面都使用require_once("header.php");。不过,我觉得我只能将该代码用于直接在 public_html 文件夹下提交的文件。如果我将 require_once("header.php"); 代码用于位于 public_html 下的目录(例如衬衫)中的任何其他文件,例如您有 public_html/shirts/example.php,header.php 不会加载图像、链接或任何其他页面正确。

我知道要在短期内解决这个问题,我可以为该目录创建一个新标题并将 ../ 添加到所有代码中,但我认为有一种更简单的方法。有谁知道我可以更改 header.php 的代码,所以我不必制作单独的标题?

谢谢。

【问题讨论】:

标签: php header require-once


【解决方案1】:

您可以添加到您的include_path。

要么添加 header.php 所在的当前目录,要么在站点的某处创建一个名为 include 的文件夹并将其添加到包含路径中。

您可以更新 php.ini 中的 include_path(最简单),也可以像这样以编程方式进行:

set_include_path(implode(PATH_SEPARATOR, array(
    '/path/to/your/includes',
    get_include_path(),
)));

编程方法效果很好,但除非您的大部分文件都通过通用脚本(即前端控制器模式)提供服务,否则您需要将该代码复制到所有文件中,这并不理想。有时您也可以使用 .htaccess 来设置 include_path,但前提是 PHP 是 Apache 模块。

只要你的结构是相当静态的,包含使用 ../ 也没有什么问题。

【讨论】:

  • 我更新了 php.ini 中的 include_path,但个别页面现在无法识别 include_path = ".:/home/boldfo5/includes" 中的 header.php。有没有办法解决这个问题?
  • 确保在更改 php.ini 后重新启动网络服务器以使更改生效。你是什​​么意思个别页面不识别header.php?有些页面能识别它吗?由于您添加了包含路径,因此您应该能够在没有任何路径信息的情况下从任何脚本中 include "header.php",如果在当前目录中找不到它,它将在 /home/boldfo5/includes 中查找它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
相关资源
最近更新 更多