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

时间:2015-05-05 22:46:47

标签: php .htaccess security ini

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

中的任何其他文件。

我正在使用.user.ini文件来简单地修改一些全局设置,但是当我将它放在文档根目录(web的父级)的一级时,配置设置在根本没有触发的位置。当我把它放在网络中时一切正常。

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

安全方面我更愿意这样做,而不是拒绝使用.htaccess在网络内访问。

我使用Fast CGI作为我的PHP处理程序,不想改变它。

2 个答案:

答案 0 :(得分:2)

简短回答,似乎你不能把文件放在指定目录之外。

根据http://php.net/manual/en/configuration.file.per-user.php

  

除了主要的php.ini文件外,PHP还会扫描每个文件中的INI文件   目录,从所请求的PHP文件的目录开始,和   一直到当前文档根目录(如设置中所示)   $ _SERVER [' DOCUMENT_ROOT'])。如果PHP文件在   文档根目录,只扫描其目录。

点文件不应由网络服务器

提供

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

在代码

中设置配置

另一种选择是在源代码中而不是在.user.ini文件中设置ini设置。

http://php.net/manual/en/ini.list.php列出了您可以通过ini_set()设置的所有ini设置。特别是标有** PHP_INI_USER **。

的选项

答案 1 :(得分:0)

我为我的数据库用户名,密码和数据库名称执行此操作。我包括这样的ini文件:

$parsed_ini_variables_array = parse_ini_file('/home/username/ini_folder/file_name.ini');

然后,在ini文件中:

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

我希望这会有所帮助。