2010-01-04 1 views
0

Смотрите пример здесь: http://mattpotts.com/portal/require_once (../../ путь/к/script.php) не удалось открыть разрешение потока отрицала

я положить includeme.htm в каждой директории на требуемом пути, чтобы найти точку отказа. Он отлично работает на моей локальной машине (окнах) с той же структурой каталогов, но сбой на моем удаленном (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.

ответ

1

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

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

Вы должны быть в порядке, устанавливая эти разрешения независимо от вашего сценария.

+0

Кому это будет доступно? если я изменю его с drwx ------ на drwxr-xr-x? – Matthew

+0

Он не будет доступен через Интернет. Но он будет доступен другим пользователям FTP. (Это, конечно, предполагается, что файлы плохого htaccess отсутствуют). –

+0

Почему вы хотите сделать его доступным из public_html? –

3

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

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

$path = realpath('../../private_html'); 
// $path is now /public_html/foo/private.html or whatever 
+1

Права на private_html - это все, что они пришли. Я их не трогал. Все же... – Matthew

0

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

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

  • Нет связанных вопросов^_^