PHP require_once中的绝对路径

7

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

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

我需要能够将这行代码添加到所有文件中,包括子文件夹中的文件。但我不确定如何应用在PHP中require_once方法来确保它始终与protectme();函数绝对链接。
感谢您的启示。
谢谢。

这个功能的目的是什么? - yoda
7个回答

7

将变量设置为绝对路径。 $_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__ 结合使用。 - hakre
嗨。谢谢,但是逐个排序太耗时间了。 - fitzilla
@fitzilla,如果是这样的话,你应该遵循hakre或DampeS8N的解决方案。它们都是针对你的问题的好答案。只要记住你正在进行INI更改,这将需要在部署代码的任何其他地方进行更改。 - Brad

2
你应该修改你的php.ini文件,将包含路径更改为那个(以及所有其他)被包含文件的路径。然后,无论这些文件的位置如何,你都可以在每个页面上包含它们而无需指定路径。
更多细节请查看此处

1
除了已经提到的所有内容,我建议集中所有常见功能。创建一个文件,比如common.php,包含你应用程序所需的所有包含文件,然后从所有脚本中包含它。
此外,一种不错的相对包含方式是使用dirname()函数与__FILE__魔术常量相结合。例如:
require_once dirname(__FILE__) . '/../lib/common.php';

1
将根级目录添加到您的include_path中- PHP会为您完成其余部分。没有复杂的变量、常量或其他内容。

0
如果您无法访问php.ini文件,可以使用类似于以下的方法:
include $_SERVER['DOCUMENT_ROOT']."/"."include_me.php";

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接