Я на хосте Parallels / Plesk VPS, и это действительно новый вопрос.
Веб-корень находится по адресу:
/var/www/vhosts/my-domain-name/httpdocs
Существует также путь под названием:
/var/www/vhosts/my-domain-name/private/
Но PHP-скрипты не могут читать файлы там.
Насколько я понимаю, любой файл, размещенный в рут-корне, может быть открыт для публичного доступа, если его запросит его веб-путь / имя файла. Я смутно знаю об использовании файлов .htaccess, чтобы запретить Apache обслуживать определенные файлы / каталоги.
Но могу ли (или должен) я разместить свой чувствительный файл где-нибудь вне веб-корня, но при этом разрешить его чтение сценариями PHP?
Спасибо!
Здесь были мои ошибки при попытке прочитать файл в папке "private" выше:
Warning: file() [function.file]: open_basedir restriction in effect. File(../../private/test.txt) is not within the allowed path(s): (/var/www/vhosts/blah.com/httpdocs:/tmp) in /var/www/vhosts/blah.com/httpdocs/misc/testscript.php on line 8
Warning: file(../../private/test-dt.txt) [function.file]: failed to open stream: Operation not permitted in /var/www/vhosts/blah.com/httpdocs/misc/testscript.php on line 8
ОБНОВЛЕНИЕ: решено
Picto в reddit / r / PHPHelp дало мне то, что мне было нужно, и это специфично для систем Plesk.
Мне пришлось написать файл с именем vhost.conf, помещенный в папку conf, которая существует на том же уровне, что и httpdocs. И в vhost.conf я использовал:
<Directory /var/www/vhosts/my-domain-name/httpdocs>
php_admin_value open_basedir /var/www/vhosts/my-domain-name/httpdocs:/tmp:/var/www/vhosts/my-domain-name/myfolder
</Directory>
Так что теперь я помещаю свои конфиденциальные файлы в «myfolder», который находится вне webroot (httpdocs).
После этого, чтобы эти настройки вступили в силу (перезапуск Apache не работает), нужно дать несколько специальных команд Plesk, см .: http://www.gadberry.com/aaron/2006/02/09/plesk_vhost/