require_once работает без пути включения - PullRequest
1 голос
/ 23 августа 2010

У меня есть файл 1.php, имеющий require_once для 2.php (оба они находятся в разных папках). У меня проблема в том, что 1.php волшебным образом включает в себя 2.php, поскольку путь для 2.php не в 1.php. Просто чтобы быть уверенным, я даже добавил set_include_path ('.') Перед require_once '2.php', но он все еще работает ... Есть что-то очевидное, что я пропускаю или это просто странно ??

Edit:

//-- file 1.php
//-- long list of requires...
set_include_path('.');
echo get_include_path();
require_once '2.php';

Вышеуказанное работает нормально, пока 1.php и 2.php находятся в разных папках.

Ответы [ 5 ]

2 голосов
/ 23 августа 2010

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

1 голос
/ 23 августа 2010

Возможно, у вас есть файл с тем же именем, что и файл 2 в пути к файлу 1.

1 голос
/ 23 августа 2010

Длинный выстрел, но, возможно, один из других включенных файлов изменил текущий рабочий каталог:

<?php
echo 'cwd at the beginning of 1.php: ', getcwd(), "\n";
//-- file 1.php
//-- long list of requires...
set_include_path('.');
echo 'include_path: ', get_include_path(), " \n";
echo 'cwd: ', getcwd(), "\n";
require_once '2.php';
1 голос
/ 23 августа 2010

Ради аргумента: если вы поместите 2.php в то же место, что и 1.php, будет ли включен новый файл вместо старого?

Можете ли вы сказать, какое значение используетсяваш open_basedir есть?

1 голос
/ 23 августа 2010

Попробуйте echo get_include_path() после того, как вы установили пустой путь включения, он может быть установлен где-то еще (как в файле конфигурации веб-сервера).

...