我在Windows 8.1上使用XAMPP。
我在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
谢谢!
答案 0 :(得分:4)
尝试修改PHP配置中的open_basedir settings(有关详细信息,请参阅Runtime Configuration)。这将阻止PHP访问definded basedir(s)之外的目录。
--- --- EDIT
更具决定性。您可以在Apache配置文件,php.ini或.htaccess文件中设置open_basedir。
在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>