我可以在PHP中将.user.ini文件放在文档根目录之外吗?

我可以在PHP中将.user.ini文件放在文档根目录之外吗?,php,.htaccess,security,ini,Php,.htaccess,Security,Ini,我创建了一个PHP web应用程序,它被组织在src、vendor和web等文件夹中,其中“web”被设置为我服务器上的文档根目录。这样做的原因是为了防止访问不在“web”中的任何其他文件 我使用一个.user.ini文件来简单地修改一些全局设置,但是当我把它放在文档根目录(web的父目录)的一个级别上时,配置集根本不会被触发。当我把它放在“网络”里时,一切都很好 这是什么原因? 有没有办法让.user.ini像我建议的那样工作 就安全性而言,我更愿意这样做,而不是在web内部拒绝使用.htac

我创建了一个PHP web应用程序,它被组织在src、vendor和web等文件夹中,其中“web”被设置为我服务器上的文档根目录。这样做的原因是为了防止访问不在“web”中的任何其他文件

我使用一个.user.ini文件来简单地修改一些全局设置,但是当我把它放在文档根目录(web的父目录)的一个级别上时,配置集根本不会被触发。当我把它放在“网络”里时,一切都很好

这是什么原因? 有没有办法让.user.ini像我建议的那样工作

就安全性而言,我更愿意这样做,而不是在web内部拒绝使用.htaccess进行访问

我正在使用Fast CGI作为我的PHP处理程序,不想改变这一点。

简短回答,您似乎无法将文件放在指定目录之外。 根据,

除了主php.ini文件外,php还扫描每个文件中的ini文件 目录,从请求的PHP文件的目录开始,以及 一直工作到当前文档根目录(如中的设置 $\u服务器['DOCUMENT\u ROOT'])。如果PHP文件在 文档根目录,仅扫描其目录

网络服务器不应提供点文件 但是,您的web服务器根本不应该提供/^./文件。如果您的web服务器正在阻止对以点开头的文件的访问,则您不会有泄露该文件的风险

在代码中设置配置 另一个选项是在源代码中而不是在.user.ini文件中设置ini设置


提供可通过
ini\u set()
设置的所有ini设置的列表。特别是标记为**PHP\u INI\u USER**的选项。

我这样做是为了我的数据库用户名、密码和数据库名称。我包括如下所示的ini文件:

$parsed_ini_variables_array = parse_ini_file('/home/username/ini_folder/file_name.ini');
然后,在ini文件内部:

;Comment
[section name]
key=value
key2=value2

我希望这能有所帮助。

我正是在使用.user.ini文件作为“auto\u prepend\u file”选项。然后,我包括一个配置文件和一些设置,contants和一个composer的自动加载供应商。我可能会使用以点开头的阻塞文件。谢谢