Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как правильно указать путь для функции header PHP

asdasdasd Ученик (77), на голосовании 5 дней назад
при запуске кода пишет ненайден ресурс, хотя зайдя на url, файловая схема такая же,
т.е.: папка с проэктом =>
папка closed =>
файл config.php
папка www =>
файл index.php
папка errors =>
файл serverError.php

вот код
 serverError.php:





Ошибка сервера




2002


ошибка подключения


не удается установить соединение с сервером базы данных. перейдите на главную страницу




 config.php
try{
$conn = new PDO("mysql:host=localhost;dbname=db", 'root', '');
header("Location: ../www/errors/serverError.php");
} catch (PDOException $e) {
header("Location: ../www/errors/serverError.php");
}
?>
 index.php
require_once('../closed/config.php');
?>
Голосование за лучший ответ
Вацок Адамов Ученик (163) 1 месяц назад
Проблема, скорее всего, связана с тем, что вы пытаетесь использовать функцию header() после того, как уже был выведен какой-то вывод на экран (например, HTML-код). Функция header() должна быть вызвана до того, как начнется вывод данных на страницу.

В вашем случае, убедитесь, что функция header() вызывается до вывода любого HTML-кода. В файле config.php у вас вызов header() идет после создания объекта PDO и передачи его в переменную $conn, что некорректно. Попробуйте перенести вызов header() в начало файла config.php, до любого вывода или создания объекта PDO. Например:
 header("Location: ../www/errors/serverError.php"); 
exit(); // Добавьте exit(), чтобы прекратить выполнение скрипта после перенаправления
try {
$conn = new PDO("mysql:host=localhost;dbname=donteas_db", 'root', 'xerbxer229');
} catch (PDOException $e) {
// Обработка ошибок соединения
}
?>
Также, убедитесь, что пути к файлам указаны верно, особенно в случае использования перенаправления с помощью header(). В вашем случае, если файлы config.php, index.php и serverError.php лежат в указанных папках, то пути должны быть правильными.
CPT Просветленный (21033) 1 месяц назад
Ваш код выглядит правильно, но проблема может быть связана с тем, как PHP интерпретирует относительные пути. Ваш код предполагает, что текущий рабочий каталог - это каталог, где находится ваш скрипт. Однако это не всегда так.

Вместо использования относительных путей, я бы рекомендовал использовать абсолютные пути. Вы можете использовать встроенную константу __DIR__ для получения пути к каталогу текущего файла. Вот как вы можете изменить ваш код:
 // config.php 
try{
$conn = new PDO("mysql:host=localhost;dbname=db", 'root', '');
header("Location: " . __DIR__ . "/../www/errors/serverError.php");
} catch (PDOException $e) {
header("Location: " . __DIR__ . "/../www/errors/serverError.php");
}
?>
 // index.php 
require_once(__DIR__ . '/../closed/config.php');
?>
Это гарантирует, что путь всегда будет указывать на правильный файл, независимо от текущего рабочего каталога. Пожалуйста, попробуйте это и посмотрите, решает ли это вашу проблему. Если нет, дайте мне знать, и я помогу вам дальше.
Похожие вопросы