2012-01-25 8 views
0

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

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

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

require_once("include/database.php"); 

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

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

ответ

1

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

.htaccess:

php_value include_path "/path/to/include/" 

PHP файл:

require_once get_include_path().'file.php'; 


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

require_once($_SERVER['DOCUMENT_ROOT']."/include/database.php"); 
+1

Вот что я искал. – winck

0

В Table.php

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

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

+0

Ну, проблема с»../include/Дат abase/"заключается в том, что тогда это не сработает при включении с cart.php. О, и есть классы. Я предпочитаю процедурный подход. – winck

+0

Если вы включите таблицу из cart.php, она будет работать. – MetalFrog

1

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

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

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

require_once(APP_ROOT . '/include/database.php'); 
+0

Ах, хорошо. Спасибо за постоянный совет, делает его намного чище. – winck

 Смежные вопросы

  • Нет связанных вопросов^_^