2012-03-15 44 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';