У меня есть каталог /htdocs/unsecured
, и я хочу ограничить все, что находится в этом каталоге или его подкаталогах, от доступа к чему-либо за пределами этого каталога. Где и как установить open_basedir
только для этого каталога?
Как установить для конкретной директории open_basedir
Ответ 1
Вы можете установить 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 ;
является разделителем, поэтому это должно работать, но я не могу проверить его лично.
Ответ 2
Вы можете изменить open_basedir в php.ini, в вашем httpd.conf или во время выполнения.