У меня есть каталог /htdocs/unsecured
и я хочу ограничить все, что находится в этом каталоге или его подкаталогах, от доступа к чему-либо за пределами этого каталога. Где и как установить open_basedir
для этого каталога?
Вы можете установить open_basedir
в файле конфигурации Apache, php.ini или в файле .htaccess.
Обычно я устанавливаю это в файле конфигурации apache, например, /etc/httpd/conf/httpd.conf.
У вас будет структура каталогов для вашего текущего домена / виртуального хоста, и вы можете добавить строку прямо там:
<VirtualHost 123.123.123.123:80> <Directory /htdocs/unsecured> php_admin_value open_basedir "C:/htdocs/unsecured" </Directory> </VirtualHost>
Примечание . 123.123.123.123
– это IP-адрес вашего домена, и этот блок примеров потенциально не содержит большого количества данных для этой конфигурации, только показывая, что нужно для open_basedir
.
В php.ini вы можете сделать это на гораздо более общем уровне (и он будет применяться ко всем доменам вашего сервера) с помощью:
open_basedir = "/htdocs/unsecured"
В .htaccess вы должны иметь возможность использовать следующие (хотя я еще не тестировал):
php_value open_basedir "/htdocs/unsecured"
EDIT (путь к Windows)
За комментарий вы запускаете xammp в Windows (и не используете виртуальные хосты). С этой информацией я бы предложил поместить ваше правило open_basedir
в файл php.ini
. Это должно (надеюсь) работать на вас:
open_basedir = "C:\xampp\htdocs\unsecured"
В linux a :
является разделителем полей. В Windows – ;
это разделитель, поэтому это должно работать, но я не могу проверить его лично.
Вы можете изменить open_basedir в php.ini, в вашем httpd.conf или во время выполнения.