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 绝对路径的主要内容,如果未能解决你的问题,请参考以下文章