requireonce 中的 PHP 绝对路径

Posted

技术标签:

【中文标题】requireonce 中的 PHP 绝对路径【英文标题】:PHP absolute path in requireonce 【发布时间】:2012-04-01 08:55:52 【问题描述】:

我正在使用一个简单的预制授权工具来保护我的网站。该工具要求将这行代码应用到每个 .php 页面的顶部。 Auth.php 位于根级别。

<?php $(require_once('Auth.php'))->protectme(); ?>

我需要能够将这行代码添加到每个文件中,包括子文件夹中的文件。但我不确定如何应用require_once in php 中所示的方法以确保它始终与protectme() 一起绝对链接;功能。

感谢任何启发。

干杯。

【问题讨论】:

这个功能的目的是什么? 【参考方案1】:

将变量设置为绝对路径。 $_SERVER['DOCUMENT_ROOT'] 是一个 PHP 全局变量,用于存储服务器、根路径。您只需将其余的路径信息插入到脚本中。例如,如果您的网站存在于 /var/www/ 并且您的脚本存在于 /var/www/scripts 您将执行以下操作。

$path = $_SERVER['DOCUMENT_ROOT'] . '/scripts/Auth.php';
require_once($path);

【讨论】:

【参考方案2】:

您可以使用相对路径来访问它。

上一级:../Auth.php

两级以上:../../Auth.php

等等

【讨论】:

提示很好,但并不总是有效。它与__DIR__ 结合使用。 嗨。谢谢,但是单独排序太费时间了。 @fitzilla,在这种情况下,您应该遵循 hakre 或 DampeS8N 的解决方案。它们是您问题的好答案。请记住,您正在更改 INI,这将需要在您的代码部署的其他任何地方进行更改。【参考方案3】:

您应该更改您的 php.ini 以将包含路径更改为该(所有其他)包含文件的路径。然后,您可以将它们包含在每个页面上,而不考虑它们自己的位置。

More Details

【讨论】:

【参考方案4】:

将根目录添加到您的include_path - PHP 将为您完成剩下的工作。没有复杂的变量、常量等。

【讨论】:

【参考方案5】:

除了已经说过的所有内容之外,我建议集中所有常见功能。创建一个文件,例如 common.php,其中包含您应用程序所需的所有包含,然后从您的所有脚本中包含它。

另外,进行相对包含的一个好方法是将dirname() 函数与__FILE__ 魔术常数结合使用。例如:

require_once dirname(__FILE__) . '/../lib/common.php';

【讨论】:

【参考方案6】:

如果你没有访问 php.ini 的权限,我以前用过类似的东西

include $_SERVER['DOCUMENT_ROOT']."/"."include_me.php";

【讨论】:

【参考方案7】:

因为它是一个站点范围的更改,最简单的方法是首先将其目录添加到 php.ini 的包含路径中。

如果您无法更改php.ini,则有a few other options for adding it to the include path。

【讨论】:

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

php获取上级文件绝对路径

PHP绝对路径的问题

file_exists 或 getimagesize 仅适用于本地、绝对文件路径,但不适用于 PHP 中的 URL

PHP获取文件绝对路径的代码(上一级目录)

PHP获取文件的绝对路径

PHP获取文件的绝对路径