путь require_once не может найти файл? - PullRequest
0 голосов
/ 29 сентября 2011

Вот моя структура папок в качестве примера:

source files/
    controller/
        ctrl_showData.php
    model/
        Database.class.php

Предположим, что теперь он находится в каталоге контроллера, а в ctrl_showData.php я хочу указать Database.class.php, поэтому я пытаюсь:

require_once(dirname(__FILE__) .'/../model/Database.class.php');

Но когда я отлаживаюсь, программа останавливается, когда выполняет приведенную выше инструкцию, которая, я думаю, не может найти файл. Я уже читал подобные вопросы и пробовал их решения, но ни один не работает. Кто-нибудь может помочь? Спасибо! Вот результат эха:

/controller/../model/Database.class.php

По-видимому, он не идет в родительский каталог, который является исходными файлами /, а затем идет в модель /, но не знаю почему?

Спасибо за предложения об ошибках, сообщение об ошибке:

Warning: require_once(config/config.php): failed to open stream: No such file or directory in /model/Database.class.php

Поскольку мне также требуется файл config.php в файле базы данных, путь которого неверен. Я не думал об этом, спасибо за вашу помощь!

Ответы [ 5 ]

4 голосов
/ 30 сентября 2011

Попробуйте это:

require_once(realpath(dirname(__FILE__) . '/..') . '/model/Database.class.php');
1 голос
/ 29 сентября 2011

Вы можете попробовать использовать:

include('./model/Database.class.php')
0 голосов
/ 30 сентября 2011

В чем ошибка в вашем журнале ошибок? Вы получаете что-то, что говорит, что файл не может быть найден? Вы вообще получаете ошибку?

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

error_reporting E_ALL
ini_set('display_errors', 1);

А потом посмотри в чем ошибка. Если ваша ошибка действительно связана с отсутствующим файлом, убедитесь, что путь правильный, а также убедитесь, что ваш путь включения правильный. Вы могли по ошибке удалить "." в директиве include_path, иначе ваша CMS могла бы сделать это, если хочет ограничить вас использованием их автозагрузчика.

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

0 голосов
/ 29 сентября 2011

Попробуйте обернуть этот вызов в realpath () http://us.php.net/manual/en/function.realpath.php

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

0 голосов
/ 29 сентября 2011

Вы можете использовать относительный путь, поэтому использование этого (ниже) должно работать:

require_once('../model/Database.class.php');
...