Задать вопрос

Странный require_once: не работает с подключением файлов директорией выше?

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

Структура файлов следующая:
/var/www
-- file1.php
-- /test/
---- index.php
---- file2.php

Файл /var/www/test/index.php выглядит вот так:
error_reporting(E_ALL);
echo getcwd();
echo "<br /><br />";
$path = dirname(__FILE__) . "/../file1.php";
$path2 = __DIR__ . "/../file1.php";
$path3 = "/var/www/file1.php";
echo  $path . "<br />";
echo  $path2 . "<br />";
echo  $path3 . "<br />";
echo "<br />";
var_dump(file_exists($path));
var_dump(file_exists($path2));
var_dump(file_exists($path3));
var_dump(file_exists("file2.php"));
#require_once (dirname(__FILE__).'/../file1.php');


Вот то, что отдает браузер при открытии /var/www/test/index.php
/var/www/test

/var/www/test/../file1.php
/var/www/test/../file1.php
/var/www/file1.php

bool(false) bool(false) bool(false) bool(true)


Может дело в настройках апача и есть какая нибудь директива, которая регулирует данное дело?

ОС Debian 7 Wheezy. Веб-сервер Apache2.
  • Вопрос задан
  • 3126 просмотров
Подписаться 3 Оценить 5 комментариев
Решения вопроса 1
deadbyelpy
@deadbyelpy
веб-шмеб
Проверьте настройку open_basedir
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
AloneCoder
@AloneCoder
[object Object]
Use realpath(), Luke
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
А ОШИБКИ, ОШИБКИ-то где? Здесь сайт для программистов, а не лавочка у подъезда. А посетители (как предполагается) - программисты, а не бабки-гадалки (впрочем, судя по предыдущим ответам, с программистами, всё-таки, напряг). Специально для бабок - краткое введение в программирование: phpfaq.ru/debug#intro

Если что-то не работает, то выдается ошибка. Ошибку надо прочесть и исправить.
Любые директивы апача начинаем искать только ПОСЛЕ того, как выяснили причину. Не до, не вместо, а ПОСЛЕ. Это очень простой принцип, его совсем нетрудно выучить
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы