#php
#php
Вопрос:
Вот пример структуры файла:
page.php
db.php
folder1/subpage.php
folder2/fn.php
page.php
require_once('folder2/fn.php');
folder1/subpage.php
require_once('../folder2/fn.php');
folder2/fn.php — требуется подключение к базе данных
require_once('../db.php');
/* then gets info from database */
В принципе, fn.php содержит функции базы данных для получения / установки информации. Для этого требуется db.php , который является файлом подключения к базе данных. Этот код работает в subpage.php , но не в page.php (ошибка «не удалось открыть поток: нет такого файла или каталога в …»).
Есть ли способ (с использованием относительных ссылок), чтобы он работал во всех файлах независимо от уровня каталога?
Спасибо за вашу помощь!
Комментарии:
1. Какой файл вы включаете в page.php это очень важно.. вы должны поместить код page.php для лучшей понятности..
2. Рукми: представьте, что это весь код … других файлов, включенных в page.php
Ответ №1:
Я всегда использую абсолютный путь к включаемому. Есть несколько способов сделать это, эта команда вернет абсолютный путь
<?php echo getcwd(); ?>
But this is what I personally use:
<? include $_SERVER['DOCUMENT_ROOT'] . "/includes/analytics.php"; ?>
независимо от того, где находится файл, php будет иметь абсолютный путь.
Комментарии:
1. другим методом было бы использовать dirname(__ FILE __), чтобы получить абсолютный путь к текущему скрипту, который включает
2. как насчет добавления файлов за пределами общедоступного каталога? Вы не можете сделать www.example.com/../db.php — а ты знаешь?
3. Никакие пути не должны быть абсолютными /hompages/public_html/include/db.php или относительный include/db.php вы можете использовать URL-адрес, если вы включали файл с другого сервера за пределами вашего собственного, это делается с помощью cURL. Если вы хотите включить файл за пределами корневого веб-сайта вы должны использовать следующее homepages/dir_name/db.php вы можете либо жестко закодировать корень документа или сделать это динамически, используя этот кусок кода <? include $SERVER[‘DOCUMENT_ROOT’] . «/dir_name/db.php»; ?> Надеюсь, ответил на ваш вопрос.
4. Также рекомендуется использовать include или require на всех страницах. Некоторые люди скажут index.php в рамках они будут включать products.php а затем внутри products.php они будут включать в себя db.php Если вы используете оба варианта products.php и db.php включите их оба в index.php это может работать по-другому, но когда дело доходит до отладки, это значительно облегчает вашу жизнь. Удачи
5. Спасибо, Адам. Я попробую это, как только вернусь домой. Лично мне не нравится включать файлы во включенные файлы, но в этом случае php выдавал мне ошибку, поскольку я пытаюсь использовать mysql_query() внутри включенного файла (даже если он находится внутри функции и не вызывается из включенного файла). В любом случае, я включаю их в оба index.php и fn.php .