Включая файлы из разных каталогов - PullRequest
0 голосов
/ 25 января 2012

Итак, у меня есть эти файлы:

/
|
+ include/
|   |
|   + database.php
|
+ cart/
|   |
|   + table.php
|
+ cart.php

My cart.php отображает страницу с таблицей, созданной table.php (включенный файл). Причина, по которой у меня есть отдельный файл для таблицы, заключается в том, что после некоторых операций в cart.php мне необходимо снова сгенерировать таблицу - текущая таблица удаляется, а новая загружается с помощью Ajax. Тем не менее, мой файл table.php имеет следующую строку:

require_once("include/database.php");

Это довольно проблематично, поскольку, когда файл включен в файл cart.php, путь имеет смысл. Но когда он вызывается сам по себе, текущим каталогом будет cart /, а в каталоге / нет каталога include .. 1007 *

Есть ли способ решить эту проблему? Я хотел бы избежать использования большого абсолютного пути. Можно ли сказать PHP, что include / должен всегда искать файлы, независимо от того, где они были вызваны? Это где я должен это делать (в каком файле)?

Ответы [ 3 ]

1 голос
/ 25 января 2012

В этом случае я бы предложил определить (абсолютный) корневой путь вашего приложения в константе, например, добавьте это в ваш config / bootstrap:

// Absolute path to your application's root directory
define('APP_ROOT', '/var/www/vhosts/example.com/httpdocs');

Тогда вы можете просто использовать эту константу, например:

require_once(APP_ROOT . '/include/database.php');
1 голос
/ 25 января 2012

Если вы используете .htaccess, вы можете установить include path :

.htaccess:

php_value include_path "/path/to/include/"

php файл:

require_once get_include_path().'file.php';


Другой способ :

require_once($_SERVER['DOCUMENT_ROOT']."/include/database.php");
0 голосов
/ 25 января 2012

В табл.php

require_once('../include/database.php');

Что ж, перечитывая ваш вопрос, похоже, что вы хотите autoload вещи, но у нас нет достаточно информации, чтобы определить, настроены ли ваши классы таким образом, чтобы это способствовало автозагрузке.

...