Я на хосте Parallels/Plesk VPS, и это действительно вопрос новичков.
Веб-сайт находится по адресу:
/var/www/vhosts/my-domain-name/httpdocs
Существует также путь, называемый:
/var/www/vhosts/my-domain-name/private/
Но PHP-скрипты не могут читать файлы там.
По моему мнению, любой файл, помещенный в веб-корневой каталог, может быть предоставлен публике, если будет запрошен его веб-путь/имя файла. Я смутно знаю об использовании файлов .htaccess, чтобы сообщить Apache не обслуживать определенные файлы /dirs.
Но может (или должен) разместить свой файл с конфиденциальными данными где-то за пределами webroot, сохраняя при этом его чтение скриптами 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
UPDATE: SOLVED
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/