5

我的 webroot 外部有一个 php 文件,我想在其中包含一个 webroot 内部的文件。

webroot外部的文件夹
->我要包含
webroot的php文件
->要包含的文件

所以我必须向上一个目录,但这不起作用:

include('../webroot/file-to-include.php');

包含完整路径也不起作用:

include('home/xx/xx/domains/mydomain/webroot/file-to-include.php');

我怎样才能做到这一点?

4

6 回答 6

13

完整路径应该是:

include('/home/xx/xx/domains/mydomain/webroot/file-to-include.php');

或者你应该像这样设置路径:

include(__DIR__ . '/../webroot/file-to-include.php');  // php version >= 5.3
include(dirname(__FILE__) . '/../webroot/file-to-include.php');  // php version < 5.3
于 2012-11-25T11:12:35.160 回答
1

将它放在一个公共文件中,由 webroot 之外的所有 php 源共享:

<?php

  define('PATH_TO_WEBROOT', '/home/xx/xx/domains/mydomain/webroot');

然后使用以下内容包含文件。

<?php
  include (PATH_TO_WEBROOT.'/file-to-include.php');

如果您的 webroot 的位置发生变化,您只需在代码库中更改一次。

您可以通过设置指令将 php 配置为自动将给定文件添加到所有脚本中。auto_prepend_file例如PATH_TO_WEBROOT,该文件可以包含常量或require_once包含它的文件。此设置可以在每个域或每个主机的基础上完成(请参阅ini 部分文档)。

此外,如果您广泛使用类,请考虑使用自动加载功能。

于 2012-11-25T11:41:56.040 回答
0

尝试在你的完整路径前加上一个斜杠,所以它看起来像

include('/home/xx/xx/domains/mydomain/webroot/file-to-include.php');

否则,它将被解释为相对路径。

您还可以尝试将 dir 更改为 webroot 并查看这是否有效 - 出于调试目的:

chdir("/home/xx/xx/domains/mydomain/webroot");
include "your_file.php";
于 2012-11-25T11:15:25.333 回答
0

我将受保护的数据放在名为的文件中conn.txt

来自 FileZilla 的根文件图像

然后我使用了以下 PHP 命令:

$DbInfoFile = "../conn.txt";
于 2017-07-22T09:15:18.393 回答
0

快进到今天(2021 年),另一种方法是简单地将 PHPinclude_path指令添加到您的 php.ini(或 user.ini)中,以指向包含文件夹,无论它在哪里(在公共根目录内部或外部)。这种方法融合了在您的项目中更改一行代码的便利性,而无需触及 PHP 代码。我不知道这是否适用于 Windows 机器,因为我在 CentOS 上。

示例:( include_path = ".:/home/{acct-name}/{include-path}"这将是 public_html 或任何您的公用文件夹的上一级)

这种混合方法允许您include 'file-to-include.php';在 PHP 代码中简单地调用,而无需经历定义根的整个麻烦,同时通过仅修改站点范围内的一行代码来保持更改包含文件的灵活性。

顺便说一句,您可以有多个包含位置。在这种情况下,您可以使用冒号分隔这两个位置,例如include_path = ".:/home/{acct-name}/{include-path-1}:/home/{acct-name}/{include-path-2}".

于 2021-09-10T17:52:31.770 回答
-6

这应该工作

$_SERVER['DOCUMENT_ROOT']/home/xx/xx/domains/mydomain/webroot/file-to-include.php

并确保您可以访问该级别。

于 2012-11-25T11:13:26.647 回答