php include_once 路径

Posted

技术标签:

【中文标题】php include_once 路径【英文标题】:php include_once path 【发布时间】:2012-02-23 14:07:12 【问题描述】:

我正在尝试找到一种方法使 include_once(); 路径从开始目录开始,然后找到路径,例如而不是../../../path/to/file,我将拥有/path/to/file。如果我这样做 /path/to/file 它说没有这样的文件或目录,这是我的直接代码

<?php
include_once("/assets/page_assets.php");
?>

【问题讨论】:

path start from the beginning directory 来自网络服务器的根目录? /path/to/file 是文件系统根目录的路径! 【参考方案1】:

如果你有 Apache 服务器

<?php
include_once($_SERVER['DOCUMENT_ROOT'] . "/assets/page_assets.php");
?>

"/assets/page_assets.php" 表示from the root of the disk,而不是来自服务器的根文件夹。如果您在谈论其他一些beginning directory,则将其定义为单独的常量/变量的物理路径(服务器文件系统中的路径,而不是 Web 路径),并将其添加到包含的路径中,如上所示。

【讨论】:

【参考方案2】:

您可以明确指定包含路径:

<?php ini_set('include_path',ini_get('include_path').':../../../:');  ?>

但正如 Cheery 在评论中提到的,您必须包含您的文件而不带前导斜杠:

<?php
include_once("assets/page_assets.php");
?>

【讨论】:

【参考方案3】:

为此,您必须使用从根目录开始的路径。在某些情况下,这可能看起来像 /var/www/mysite.com/assets/page_assets.php。找到该路径的一种方法是使用__FILE__(前后各有2个下划线)。如果您从文件中回显它,它将显示完整的路径。您应该能够使用它来设置正确的完整路径。

【讨论】:

【参考方案4】:

chdir($_SERVER['DOCUMENT_ROOT']); 开始您的脚本

现在你可以调用include("path/to/file.php");,它会从webroot开始查找。

【讨论】:

以上是关于php include_once 路径的主要内容,如果未能解决你的问题,请参考以下文章

include_once(../../ config.php):无法打开流:没有这样的文件或目录

警告:include_once(../lib/Database.php):打开流失败:没有这样的文件或目录

Smarty常用函数

PHP包含vs include_once(速度)[重复]

php的include(),require(),include_once(),require_once()

PHP 警告:include_once():open_basedir 限制生效