PHP абсолютный путь в requireonce - PullRequest
6 голосов
/ 15 марта 2012

Я использую простой готовый инструмент авторизации для защиты своего сайта.Инструмент требует, чтобы эта строка кода применялась в верхней части каждой страницы .php.Auth.php живет на корневом уровне.

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

Мне нужно добавить эту строку кода в каждый файл, включая файлы в подпапках.Но я не уверен, как применить метод, как показано в require_once в php , чтобы гарантировать, что он всегда связан абсолютно, наряду с protectme ​​();функция.

Любое просветление приветствуется.

Приветствия.

Ответы [ 7 ]

6 голосов
/ 15 марта 2012

Установить переменную в абсолютный путь. $ _SERVER ['DOCUMENT_ROOT'] - это глобальная переменная PHP, в которой хранятся серверы, корневой путь. Вам просто нужно вставить оставшуюся информацию о пути к сценарию. Например, если ваш веб-сайт существует в / var / www /, а ваш скрипт существует в / var / www / scripts, вы должны сделать следующее.

$path = $_SERVER['DOCUMENT_ROOT'] . '/scripts/Auth.php';
require_once($path);
2 голосов
/ 15 марта 2012

Вы должны изменить свой php.ini, чтобы изменить путь включения к пути к этим (всем другим) включаемым файлам.Затем вы можете включить их без пути на каждой странице независимо от их собственного местоположения.

Подробнее

2 голосов
/ 15 марта 2012

Вы можете использовать относительный путь, чтобы добраться до него.

На один уровень вверх: ../Auth.php

Два уровня вверх: ../../Auth.php

и т. Д.

1 голос
/ 15 марта 2012

В дополнение ко всему, что уже было сказано, я предлагаю централизовать все общие функции. Создайте файл, например common.php, со всеми включениями, которые вам нужны для вашего приложения, а затем включите его во все ваши сценарии.

Кроме того, хороший способ сделать относительное включение - использовать функцию dirname() в сочетании с магической константой __FILE__. Например:

require_once dirname(__FILE__) . '/../lib/common.php';
1 голос
/ 15 марта 2012

Добавьте корневой каталог к ​​вашему include_path - PHP сделает все остальное за вас. Никаких сложных переменных, констант или чего-либо еще.

0 голосов
/ 15 марта 2012

Самый простой способ, так как это изменение для всего сайта, это сначала добавить его каталог в пути включения в php.ini.

Если вы не можете изменить php.ini, есть несколькодругие опции для добавления его в путь включения .

0 голосов
/ 15 марта 2012

Если у вас нет доступа к php.ini, я использовал что-то подобное раньше

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