2012-03-15 45 views
5

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

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

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

任何启蒙感激。

干杯。

+0

此功能的用途是什么? – yoda 2012-03-15 19:27:33

回答

6

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

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

您可以使用相对路径来达到它。

的上一层:../Auth.php

向上两级:​​

+0

提示很好,但这并不总是奏效。它与['__DIR__'](http://www.php.net/manual/en/language.constants.predefined.php)结合使用。 – hakre 2012-03-15 19:27:58

+0

嗨。谢谢,但要单独分类这些将耗费太多时间。 – fitzilla 2012-03-15 19:53:39

+0

@fitzilla,在这种情况下,您应该遵循hakre或DampeS8N的解决方案。他们是你的问题的好答案。请记住,您正在进行INI更改,这需要在您的代码部署的其他任何地方进行更改。 – Brad 2012-03-15 19:54:55

1

添加根级目录到include_path - PHP会为你做休息。没有复杂的变量,常量或其他。

2

你应该改变你的php.ini来改变包含路径到包含所有其他文件的路径。然后,无论他们自己的位置如何,您都可以在每个页面上包含它们,而无需路径

More Details

-1

为什么不直接使用绝对路径?

require('/auth.php'); 

也许我误解你的问题

+0

,因为它不起作用 – 2012-03-15 19:33:00

0

如果您没有访问php.ini中,我用这样的事情之前

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

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

此外,一个很好的方法来做相对包括是通过使用dirname()函数结合__FILE__魔术常数。例如:

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