Есть PHP, включающий путь блюза. Быстрая и простая начальная загрузка? - PullRequest
0 голосов
/ 30 сентября 2011

Я довольно далеко в проекте, и у меня возникают проблемы с правильным включением всего.У меня есть несколько файлов в разных каталогах, которые должны включать в себя одни и те же файлы, но поскольку некоторые из них вызываются через ajax или через include в разных ситуациях, путь к ним различен.У меня есть путь php_include, настроенный через .htaccess, но сервер тестирования, который мне нужен, не настроен с командами php в .htaccess!Я пытаюсь найти быстрый способ связать все вместе.

У меня есть несколько файлов, включая один и тот же файл проекта, который, в свою очередь, включает функции и т. Д. У меня есть переменная $ ROOT, настроенная дляхранить абсолютный путь к моим каталогам, но его нельзя использовать во включениях без хакерства с php.ini, что я не могу легко сделать, и он все равно включается впоследствии.

Я немного знаю о начальной загрузке,и я хотел бы перенаправить все через htaccess, но у меня нет понятия, как реализовать что-то подобное действительно быстро и легко (и сработает ли это для файлов, вызываемых через ajax?)

Я могуне полагайтесь на server_document_root, потому что он может нуждаться в том, чтобы находиться в подкаталоге.

Это не основано на классах, но имеет объекты значений для базы данных .. есть основной home.php, view.php и т.д. в корнекаталог, затем программа / каталог с основными сценариями и объектами значений, затем папки утилит и компонентов, которыеntain миниатюрные классы типов представления.

Я бы все переделал, если бы у меня было время, но сейчас я пытаюсь найти способ, чтобы все работало (желательно без сброса всего в одну папку: p)

Ответы [ 2 ]

3 голосов
/ 30 сентября 2011

В home.php или view.php включите ваш «основной» файл, это будет включать и остальную часть вашего приложения.

require 'base.php';

Это нормально, если home.php или view.php в некоторыхдругой каталог, просто сделайте все, что вам нужно сделать в этом файле, чтобы загрузить base.php что-то вроде этого будет работать так же:

require '../base.php';

Затем в base.php

$root = dirname(__FILE__);
require $root.'/lib/mylib1.php';
require $root.'/lib/mylib2.php';

__FILE__ - это полный путь к текущему файлу, dirname получает его каталог, после чего вы можете написать все ваши включения / требования относительно местоположения base.php.

Надеюсь, это поможет вам указатьв полезном направлении.

2 голосов
/ 30 сентября 2011

Простым решением для этого может быть использование набора переменных до включения файла.Затем вы можете проверить, определена ли эта переменная, и не использует ли она путь для ajax вместо пути включения.

$included = true;
include("ajax_inc.php");

Предполагая, что ваши основные файлы находятся в /, а ваши файлы ajax находятся/ ajax:

if (isset($included)) {
    $path = "/";
} else $path = "../";

Вы также можете выполнить некоторые проверки с помощью getcwd () и chdir ()

http://php.net/manual/en/function.getcwd.php

...