【问题标题】:Calling PHP includes via a site path通过站点路径调用 PHP 包括
【发布时间】:2016-03-22 21:37:54
【问题描述】:

我已经研究了 2 天,但找不到有效的答案。

这是我的文件结构。

/ucdev/ (index and future files)
/ucdev/classes/ (Classes)
/ucdev/users/ (all the user-related docs,account settings etc)
/ucdev/users/models/ (all the other config and db files, for now).

我需要找出某种方法来加载我的所有类,这些类与我从哪个文件夹调用包含无关。基本上我需要建立一个有效的站点根变量。

我得到了最接近的使用

$subfolder = "/ucdev/"; 
$root = $_SERVER["DOCUMENT_ROOT"].$subfolder;

但 Chrome 将 $_SERVER["DOCUMENT_ROOT"] 视为本地 c:\ 类型路径,不会让我加载资源(即不允许在 Chrome 中加载本地资源错误“

所以,基本上我需要一种方法让我的 config.php 文件具有类似...

require_once ($root."classes/Session.php");
require_once ($root."classes/Token.php");
require_once ($root."classes/User.php");

无论 config.php 是否被从中提取,都加载这些资源

ucdev/index.php
or
ucdev/users/login.php

我希望我提供了足够的信息以使其有意义。

最后,最重要的事情之一是我以某种方式结束了“根路径”变量,因此我可以从根目录调用我的所有链接,而不是相对于调用它们的文件。无论调用什么文件,我都希望我的顶部导航能够正常工作。

【问题讨论】:

  • 我非常感谢文档链接,但我已经阅读文档好几天了。如果你能给我一个如何改变我的代码来工作的例子,那就太棒了。
  • $root = realpath($_SERVER["DOCUMENT_ROOT"]);定义('root',str_replace("\\","/",$root) ."/"); require_once (root."classes/Session.php");
  • 那定义('root',str_replace("\\","/",$root) ."/");是诀窍!没有它,它就永远无法始终如一地工作!谢谢!!!!

标签: php path root globals


【解决方案1】:

我发现最好的方法是:

$subfolder = "/ucdev/";
$root = realpath($_SERVER["DOCUMENT_ROOT"].$subfolder);
define('root',str_replace("\\","/",$root) ."/");

然后当我包含我的课程时,我会使用

require_once (root."classes/Config.php");

他们可以在任何地方工作。

对于相对于根目录的图像和链接,我可以执行以下操作...

img src="<?php root; ?>images/logo.png"

非常感谢 Lucky Chingi 为我指明了正确的方向!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    相关资源
    最近更新 更多