如何防止使用.htaccess或自定义php.ini重写设置

如何防止使用.htaccess或自定义php.ini重写设置,php,security,apache,.htaccess,Php,Security,Apache,.htaccess,如何确保用户不能使用.htaccess或custom php.ini覆盖设置 我应该使用的任何配置提示为了防止用户在.htaccess文件中设置PHP配置值,请不要在其虚拟主机上授予AllowOverride选项权限 或者,将PHP安装为CGI而不是Apache模块,因为CGI版本不受.htaccess文件的影响。然而,由于PHP5.3.0,PHPCGI会解析每个目录的PHP.ini文件。我不知道有什么方法可以关闭它 编辑:我刚刚在最新的默认php.ini中看到了这一点: ; Directive

如何确保用户不能使用.htaccess或custom php.ini覆盖设置
我应该使用的任何配置提示

为了防止用户在.htaccess文件中设置PHP配置值,请不要在其虚拟主机上授予
AllowOverride选项
权限

或者,将PHP安装为CGI而不是Apache模块,因为CGI版本不受.htaccess文件的影响。然而,由于PHP5.3.0,PHPCGI会解析每个目录的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文件。:-)

什么设置?PHP.ini文件中的设置不能在.htaccess中覆盖,但可以在任何PHP文件中轻松覆盖。例如,如果我在我的主PHP.ini中设置register_globals=Off,一些用户可以在他们的帐户中创建一个自定义PHP.ini,并将该值打开,我需要强制系统忽略所有这些自定义设置并只读PHP.ini“主文件”值已被删除off@animuson-使用
php\u value
指令(以及其他指令),可以在.htaccess中覆盖许多设置。请参阅@daiscog我需要防止此被覆盖:)保护我的盒子的任何提示?@marco:有些指令根本无法在脚本中工作。register_globals就是其中之一。当脚本中达到ini_set()时,PHP的设置/初始化阶段早已结束。