Сведения о вопросе

Codeliver

06:12, 23rd August, 2020

Теги

php   include    

Установка PHP включить путь на основе каждого сайта?

Просмотров: 381   Ответов: 7

Я могу установить путь PHP include в php.ini :

include_path = /path/to/site/includes/

Но тогда другие сайты страдают так, что это не хорошо.

Я могу установить PHP include в начале каждого файла:

$path = '/path/to/site/includes/';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);

Но это кажется плохой практикой и загромождает все вокруг.

Так что я могу сделать включение этого и затем включить его в каждый файл:

include 'includes/config.php';

или

include '../includes/config.php';

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

Есть ли лучший способ? Разве это имеет значение?



  Сведения об ответе

repe

15:55, 4th August, 2020

Если вы используете apache в качестве webserver, вы можете переопределить (если это разрешено) настройки с помощью файлов .htaccess . Подробности смотрите в руководстве PHP.

В основном вы помещаете файл с именем .htaccess в корневой каталог вашего сайта, который содержит некоторые значения PHP ini . Если вы настроили Apache для разрешения переопределений, этот сайт будет использовать все значения в вашей конфигурации PHP, + значения, указанные в файле .htaccess .

Может использоваться только с директивами типа PHP_INI_ALL и PHP_INI_PERDIR

как указано на странице, которую я связал. Если вы перейдете к полному списку, вы увидите, что путь включения является директивой PHP_INI_ALL .


  Сведения об ответе

LAST

09:57, 8th August, 2020

Эрик Ван Бракель дал, IMHO, один из лучших ответов.

Более того, если вы используете Apache & виртуальных хостов, вы можете настроить includes непосредственно в них. Используя этот метод, вам не придется запоминать, чтобы оставить команды php_admin в вашем .htaccess.


  Сведения об ответе

screen

02:38, 25th August, 2020

Используйте файл php.ini в корне веб-сайта, если ваша установка использует PHP как CGI (наиболее частый случай на общих хостах) с тем же синтаксисом, что и общесерверный php.ini ; поместите его в .htaccess , если у вас есть PHP как модуль Apache (сделайте phpinfo() , если не уверены):

php_value include_path "wherever"

Обратите внимание, что в папке php.ini does не влияет на подпапки .


  Сведения об ответе

fo_I_K

23:25, 28th August, 2020

Почему вы думаете, что добавление к включенному пути-это плохая практика?

Этот код в верхней части корневого скрипта не должен быть таким уж плохим...

$path = '/path/to/site/includes/';
set_include_path($path . PATH_SEPARATOR . get_include_path());

IMHO главным преимуществом является то, что он портативен и совместим не только с Apache

EDIT: я увидел недостаток этого метода: небольшое влияние на производительность. увидеть http://www.geeksengine.com/article/php-include-path.html


  Сведения об ответе

crush

00:24, 28th August, 2020

В зависимости от того, как настроен ваш хост, вам может быть разрешено поместить файл php.ini в корневой каталог вашего домашнего каталога с дополнительными директивами конфигурации.


  Сведения об ответе

PROGA

00:57, 13th August, 2020

Ваше приложение должно иметь конфигурационный файл, написанный на PHP. Затем включите его вместе с относительной страницей в каждую страницу программы. Этот конфигурационный файл будет иметь переменную для пути к includes dir, templates dir, images dir и т. д.


  Сведения об ответе

davran

02:26, 13th August, 2020

Вы также можете установить include_path в свой файл php.ini. Я парень perl, поэтому я ожидаю, что смогу загрузить includes и заставить include делать правильные вещи. У меня есть все мои includes в определенном каталоге, который добавляется к include_path . Я могу делать такие вещи, как

require_once "ClassName.php";

Мне не нужно беспокоиться об относительных путях или расположениях файлов.

Я также написал свой собственный CustomRequire , чтобы делать такие вещи, как

function CustomRequire ($file) {
    if(defined('MYINCLUDEPATH')) {
        require_once MYINCLUDEPATH . "/$file";
    } else {
        require_once $file;
    }
}

Таким образом, я могу изменить то, как я делаю это позже. Конечно, вам все еще нужно найти способ включить свой код включения :)


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться