如何防止使用.htaccess或自定义php.ini来覆盖设置

如何确保用户不能覆盖设置使用.htaccess或自定义php.ini任何提示configuration我应该使用

要阻止用户在.htaccess文件中设置PHP配置值,请不要在其虚拟主机上提供AllowOverride Options权限。

或者,将PHP安装为CGI而不是Apache模块,因为CGI版本不受.htaccess文件的影响。 但是,从PHP 5.3.0开始,PHP CGI会解析每个目录下的php.ini文件。 我不知道有一种方法可以解决这个问题。

编辑:我刚刚看到这在最新的默认php.ini:

 ; Directives following the section heading [PATH=/www/mysite] only ; apply to PHP files in the /www/mysite directory. Directives ; following the section heading [HOST=www.example.com] only apply to ; PHP files served from www.example.com. Directives set in these ; special sections cannot be overridden by user-defined INI files or ; at runtime. Currently, [PATH=] and [HOST=] sections only work under ; CGI/FastCGI. ; http://php.net/ini.sections 

所以如果你把指令放在你的php.ini目录下,它们不能被覆盖。 然而,缺点是你必须为每个虚拟主机都这样做,所以它会成为一个PITA,在那些频繁添加新环境的环境中。

再次编辑:

进一步阅读揭示了这一点:

 ; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini" ;user_ini.filename = ".user.ini" ; To disable this feature set this option to empty value ;user_ini.filename = 

所以只取消注释最后一行来禁用每个用户的ini文件。 🙂