require_once (../../ path / to / script.php) не удалось открыть поток отказано в разрешении - PullRequest
0 голосов
/ 05 января 2010

См. Пример здесь: http://mattpotts.com/portal/

Я поместил includeme.htm в каждый каталог по необходимому пути, чтобы найти точку отказа.Он отлично работает на моей локальной машине (Windows) с той же структурой каталогов, но не работает на моем удаленном (Linux) сервере.

Структура каталогов:

+-firefli/                 drwx--x--x
  +-private_html/          drwx------
    +-foo/                 drwxr-xr-x
    +-bar/                 drwxr-xr-x
    +-portal/              drwxr-wr-w
  +-public_html/           drwxr-wr-w
    +-foo/                 drwxr-wr-w
    +-portal/              drwxr-wr-w

Разрешения подтверждают, что это private_html каталог, вызывающий проблему.Надеюсь, вы понимаете цель структуры каталогов, я не знаю, является ли это обычным способом ведения дел, но он работает для меня.Ну, до сих пор.

Я очень долго спрашивал об этом, но мой вопрос просто так: есть ли что-то неправильное в установке private_html на drwxr-xr-x?Учитывая, что я не хочу, чтобы он был доступен через Интернет.Но разрешения не должны делать это, не так ли?Потому что apache делает каталог public_html доступным через http.

Ответы [ 3 ]

3 голосов
/ 05 января 2010

Вам не нужно блокировать веб-пользователей с правами доступа к папкам / файлам в private_html, так как он находится вне корневого веб-каталога. Как вы говорите, веб-пользователи могут получить доступ к материалам только в public_html

Для будущей скорости отладки, если у вас есть относительный веб-путь, вы можете преобразовать его в реальный путь, используя realpath:

$path = realpath('../../private_html');
// $path is now /public_html/foo/private.html or whatever
1 голос
/ 05 января 2010

Что ж, если вы правильно настроили DocumentRoot, чтобы он указывал на public_html, он не будет доступен из Интернета, независимо от того, какие разрешения вы на него наделили.

Приватный HTMl недоступен из Интернета, если вы не добавите файл .htaccess, который перенаправит его. Если вы не знаете, что это значит / как это сделать, вы в безопасности.

У вас должно получиться установить эти разрешения в соответствии с вашими потребностями.

0 голосов
/ 05 января 2010

Что такое user:group для private_html? Веб-сервер должен быть членом группы или владельцем файла. Чтобы прочитать содержимое каталога, каталог должен иметь разрешение execute, чтобы веб-сервер мог его открыть. По существу они должны иметь те же user:group, что и public_html. Вы просто хотите запретить разрешение write. Тот веб-сервер. Если вы установили корневой каталог документа на public_html private_html, он не будет доступен через Интернет, независимо от того, какие разрешения у вас есть. Кроме того, я всегда использую realpath для аргументов пути к и файловой операции.

...