как включить файл конфигурации БД в соответствующие файлы PHP - PullRequest
1 голос
/ 04 июля 2010

одна из моих главных проблем в кодировании - это включение config.php и класса db, где мне нужно подключиться к базе данных

считают, что у меня есть файлы mysql.php и config.php в корне моих файлов

сейчас, если я на этом пути:

Root / Sub / портальные / модули / Gallery.php

и мне нужно получить конфигурационные переменные, такие как

$dbhost = "localhost"; 
$dbuname = "root";  // Database username
$dbpass = "";   // Database password
$dbname = "mydb";   // Database NAME

Я должен включить это следующим образом:

require("../../../config.php");
require("../../../mysql.php");

$mdb = new sql_db($dbhost, $dbuname, $dbpass, $dbname, false);
if(!$mdb->db_connect_id) {
die("cant connect to db");
}

уверен, что это даст мне ошибку:

Предупреждение: включите (../../../ config.php) [function.include]: не удалось открыть поток: нет такого файла или каталога в


так есть ли способ избежать этой ошибки и найти способ подключения к моей БД?!

Ответы [ 5 ]

4 голосов
/ 04 июля 2010

Используйте это:

require(dirname(__FILE__)."/../../../config.php");
require(dirname(__FILE__)."/../../../mysql.php");
2 голосов
/ 04 июля 2010

На самом деле проще всего было бы просто включить из существующего пути включения .

Например, если для include_path установлено значение

/some/path 

, а файл конфигурации находится в

/some/path/app/config/mysql.txt

, вы можете просто сделать

include 'app/config/mysql.txt'

Как уже было предложено kgb , вы можете изменить include_path , чтобы он содержал дополнительные пути для PHP для поиска файлов.Тем не менее, вы должны использовать разумное количество путей.Задавать путь к папке конфигурации только для того, чтобы можно было включить «mysql.txt», не имеет смысла, если у вас есть куча других папок с необходимыми файлами.Общий подход в веб-приложениях - установка пути к корневой папке приложения.

Если вы загружаете свое приложение, вы также можете установить константу, которая задает путь к приложению.Я не фанат добавления констант в глобальное пространство имен, но это то, что вы часто видите.Тогда вы бы сделали

include APP_ROOT . '/config/mysql.txt';

Несколько других подходов для сохранения пути приложения приходят мне в голову, но я думаю, что вышеупомянутого достаточно для решения вашего надвигающегося вопроса.

1 голос
/ 04 июля 2010

вы можете расширить путь включения php в файле php.ini или используя set_include_path():

set_include_path(get_include_path().PATH_SEPARATOR.$pathToMysqlPhp);
include('mysql.php');
0 голосов
/ 01 декабря 2015
include './common/class/config.php';

Чтобы использовать это, чтобы определить источник php в проекте.и ./ это основной путь нашего файла.

0 голосов
/ 04 июля 2010

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

, например,

www.mywebsites.com/pages/myfile.php
www.mywebsites.com/templates/mytemplate.html
www.mywebsites.com/images/image.png
www.mywebsites.com/includes/myfunctionfile.php

, при включении файла из любого другого файла, который вы просто используете путь относительнокорень,

include('../includes/myfunctionfile.php');

низкотехнологичное решение, но оно работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...