Хочу заполнить один пробел в своих знаниях *nix, но даже не знаю, что именно гуглить.
Суть моего пробела в одном вопросе:
Есть директория /usr/share, владелец и группа - root, права стандартные, т.е. 755 на директориях и 644 на файлах. Эти права ПОЗВОЛЯЮТ читать, именно читать файлы и папки любому пользователю системы.
Есть один Apache в связке с пхп, который выполняется под юзером www-data. И ему... ЗАПРЕЩЕН доступ к директории /usr/share! Что характерно, тот же phpMyAdmin из /usr/share/phpmyadmin работает под юзером www-data, и все читается!
ПОЧЕМУ?! Поясните пожалуйста! Или ткните в правильные мануалы, объясняющие такой расклад.
Для чего надо: хочу сделать директорию, в которой будут храниться общие php-библиотеки, для инклуда из любого виртуального хоста, в режиме read-only.
admin-baton: а если попробовать прочитать любой файл в этой директории?
насколько я помню, в apache по умолчанию применяется Options -Indexes поэтому Вам is_readable('/usr/share'); вернет false
file_get_contents() тоже не читает файл.
Причем тут Options -Indexes не понял, из мануала эта директива указывает, можно ли отображать оглавление каталога, если отсутствуют файлы index.*
во, додумался ошибки включить. Warning: file_get_contents(): open_basedir restriction in effect. File(/usr/share/php/test.txt) is not within the allowed path(s):
Я так и думал. Теперь бы настроить, чтобы путь /usr/share/php добавлялся автоматически как open_basedir к каждому хосту.
admin-baton: Можно: Options -Indexes - запрет на чтение.
Второе: правильнее, думаю, было бы сделать директорию для php-библиотек в директории, где лежат виртуальные хосты, а не в стороне.
> Можно: Options -Indexes - запрет на чтение.
Вы походу немного неправильно меня поняли. Как известно из документации, "Options -Indexes" указывает, можно ли отображать оглавление каталога, если отсутствуют файлы index.*. А мне нужно, чтобы сам скрипт пхп мог читать файлы из другой директории. В любом случае, спасибо за наводку, нагуглил, что open_basedir это может делать. Читаю.
is_readable лишь проверяет, можно ли получить file_get_contents() и тому подобное, следовательно, в случае ответа 403 функция вернёт FALSE, даже если директория доступна к чтению, просто сработало Options -Indexes или другое подобное запрещение в конфиге.