Я использую XAMPP на Windows 8.1.
У меня есть это в конфигурации Apache:
DocumentRoot "C:\Users\David\Dropbox\Programming\PHP"<Directory "C:\Users\David\Dropbox\Programming\PHP">
ВХосты:
<VirtualHost *:80>
ServerName http://spedice
DocumentRoot "C:\Users\David\Dropbox\Programming\PHP\Projects_Kuba\Spedice\SczCMS\www"</VirtualHost>
<VirtualHost *:80>
ServerName http://domaciucetnictvi
DocumentRoot "C:\Users\David\Dropbox\Programming\PHP\Projects_Kuba\DomaciUcetnictvi\www"</VirtualHost>
Но если я пытаюсь получить доступ к корневому каталогу — C или получить доступ к какой-либо папке, такой как C: \ Program Files и т. Д. Обычно это работает. Как отключить выход за пределы этой папки: C: \ Users \ David \ Dropbox \ Programming \ PHP?
Fxp:
script.php
<?php
mkdir('../../../../../../folder');
?>
Размещено в: C: \ Users \ David \ Dropbox \ Programming \ PHP \ Projects_Kuba \ DomaciUcetnictvi \ www
Называется как: http://domaciucetnictvi/script.php
Спасибо!
Попробуйте изменить Настройки open_basedir в вашей конфигурации PHP (просто смотрите Конфигурация времени выполнения для дополнительной информации). Это предотвратит доступ PHP к каталогам за пределами определенных basedir.
—РЕДАКТИРОВАТЬ—
Чтобы быть немного более убедительным. Вы можете установить open_basedir в вашем конфигурационном файле Apache, php.ini или в файле .htaccess.
В php.ini вы можете сделать это, например, добавив:
open_basedir = "/path/to/first/folder:/path/to/second/folder"
В .htacces вы можете сделать это с:
php_flag open_basedir "/path/to/first/folder"
В вашем конфиге Apache попробуйте:
<Directory /docroot1>
php_admin_value open_basedir /path/to/first/folder
</Directory>
<Directory /docroot2>
php_admin_value open_basedir /path/to/second/folder
</Directory>
Других решений пока нет …