проблемы, требующие файлы в php из разных мест - PullRequest
0 голосов
/ 25 сентября 2011

У меня есть один файл PHP, который мне требуется во многих различных файлах php.

В PHP-файле хранится информация о БД, а также требуется еще один файл с именем нечто.php ....

Теперь, скажем, я сохранил файл PHP (с информацией о базе данных) с именем my_db_info.php в папке с именем config.

У меня есть еще один PHP-файл, который хранился в двух папках над папкой config, который называется all_functions. Теперь для запроса файла с информацией о БД я бы написал require('folder1/config/my_db_info.php'); Теперь для этого потребуется штраф my_db_info.php, но файл, необходимый в my_db_info.php (что-то .php), не будет включен, что приведет к фатальной ошибке.

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

затем, когда я изменяю файл my_db_info.php и изменяю строку запроса, чтобы уменьшить количество папок, которые он увеличивает или уменьшает, например:

require('../something.php');

К

require('../../something.php');

Кажется, работает. Но я должен изменить количество папок вверх / вниз на то, что является основным файлом (в папке all_functions). так как если бы я требовал something.php в этом файле ...

Это означает, что когда я хочу потребовать my_db_info.php в другой файл, который находится в совершенно другом месте, чем файл в папке all_functions (например, на 5 папок вверх), мне придется создать еще одну my_db_info. php для того чтобы все работало нормально ....

Почему это происходит, и есть ли способ, как я могу это исправить?

Спасибо

1 Ответ

1 голос
/ 25 сентября 2011

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

Попробуйте использовать $ _SERVER ['DOCUMENT_ROOT'] (что даст вам что-то вроде / home / username / htdocs)

Если я правильно понимаю ваши настройки, у вас есть следующие 2 каталога в каталоге (возможно, в корне):

/
/all_functions
/config

Вместо включения с несколькими include("../my_db_info.php"); измените на include($_SERVER['DOCUMENT_ROOT']."/config/my_db_info.php"); и повторите при необходимости для других каталогов.

Если вы сделаете это таким образом, он будет работать для нескольких каталогов вне того места, где находятся каталоги config + all_functions.

Редактировать (в ответ на комментарий)

Если $_SERVER['DOCUMENT_ROOT'] недоступен, вы всегда можете вручную написать корень документа, затем определить его как константу, а затем вызвать его в каждом сценарии.

Например.

define(rootpath, "/home/username/htdocs");
include(rootpath."/config/my_db_info.php");

Затем вы можете использовать rootpath в качестве определенной вами константы в my_db_info.php (и т. Д.), Если необходимо, недостатком является то, что вам придется писать это в каждом скрипте - хотя скрестив пальцы, что $_SERVER['DOCUMENT_ROOT'] доступно для вы.

...