2011-12-26 2 views
0

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

Warning: include(../config/config.php) [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\my-proj\functions\function.php on line 2

позвольте мне описать мою структуру папок

  1. папку ROOT /index.php
  2. функции/function.php
  3. конфигурации/config.php
  4. регистрацию/регистрации. php

теперь, если я использую абсолютный путь, тогда он дает ту же ошибку в signup.php, и если я использую относительный путь, то он дает эту ошибку в index.php

любая помощь будет оценена.

+0

если вы знаете, чтобы задать вопрос, почему вы не принимаете ответ? это потому, что вы не получили решения по вашему вопросу? –

ответ

3

использование

include("$_SERVER[DOCUMENT_ROOT]/config/config.php"); 
3

Пути файлов относятся к , вызванному сценарием. Если ваше приложение вызывает HTTP-запросы до index.php, то путь include() должен быть относительно этого - даже если сам оператор include находится в скрипте functions.php.

Общий обходной путь, чтобы сделать все пути абсолютно по отношению к корню документа:

include("$_SERVER[DOCUMENT_ROOT]/config/config.php"); 
// Note: leaving out array keys only valid in double quote string context. 

Это будет работать в index.php и functions.php одинаково.

+0

спасибо за ответ mario, какое изменение я должен сделать, чтобы преодолеть эти проблемы? – Manoj

+1

Стоит отметить, что вы можете создавать пути от __FILE__, чтобы сделать пути псевдо-относительными к скрипту вместо пути выполнения. include dirname (\ _ \ _ FILE \ _ \ _). '../blah.php'; – Corbin

+0

@ManojNakum: Другой вариант создает относительные пути, как сказал Корбин, или даже настраивает 'include_path =', чтобы облегчить работу со связанными сценариями. Я просто дал вам подход DOCUMENT_ROOT, потому что это также объясняет проблему с корневой папкой, которую я предположил в вашем вопросе. – mario

0

Используйте include __DIR__."/../config/config.php";, если вы хотите включить файл относительно файла, который вы исполняемой в данный момент. Если вы используете версию PHP старше 5.3.0 (вы не должны» t), заменить __DIR__ на dirname(__FILE__).

$_SERVER['DOCUMENT_ROOT'] не установлен при использовании командной строки и требует, чтобы ваш проект был относительно DOCUMENT_ROOT, а не позволял пользователю размещать его, где угодно. Если phpMyAdmin использовал эту переменную, вы были бы вынуждены разместить ее вместо того, чтобы просто размещать ее там, где хотите. Другое дело, это переменная, поэтому есть потенциальная проблема безопасности.

Если требуется config.php, я предлагаю вместо этого использовать require, в противном случае используйте if (file_exists($file)) {require $file;}, чтобы вы могли избежать предупреждений, когда он не существует, и получить сообщение об ошибке, если он не может быть прочитан (я предполагаю, что если он существует, предназначенный для использования).

+0

aaand if config.php требуется один раз, require_once() – hanshenrik

+0

(включая | требовать) (_ один раз)? это языковая конструкция, а не функция, поэтому скобки не нужны. Кроме того, что я не нужен, я предпочитаю не использовать их, чтобы сделать это очевидным для других. –

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