php-如何在共享主机中存储配置

php-如何在共享主机中存储配置,php,json,config,shared-hosting,Php,Json,Config,Shared Hosting,假设我们有一个共享主机。web根目录位于/home/username/www/中。现在,我有一个PHP应用程序,它读取一个配置文件,位于/home/username/www/include/config.json。此配置文件存储密码和其他配置信息。假设不可能访问/home/username/或web根目录以外的任何目录,我该如何直接从人们那里获取config.json 如果无法将配置信息存储在纯文本文件中,请建议其他方法。有两种方法可以保护目录结构并防止读取目录中的其他文件和内容 禁用目录内容列

假设我们有一个共享主机。web根目录位于
/home/username/www/
中。现在,我有一个PHP应用程序,它读取一个配置文件,位于
/home/username/www/include/config.json
。此配置文件存储密码和其他配置信息。假设不可能访问
/home/username/
或web根目录以外的任何目录,我该如何直接从人们那里获取
config.json


如果无法将配置信息存储在纯文本文件中,请建议其他方法。

有两种方法可以保护目录结构并防止读取目录中的其他文件和内容

禁用目录内容列表 使用htaccess 将以下内容放入.htaccess文件将禁用目录列表

Options -Indexes
使用index.html 如果服务器不允许这样做,那么最简单的方法是在所有目录中放置一个伪index.html文件。 因此,当访问目录路径时,index.html将打开

将资源保留在WEB\u根目录之外 在服务器上承载应用程序时,路径通常如下所示:

/var/www/

所有web内容都保存在www中,只有它才能在网站上访问。但是那些不能直接从url访问的内容可以保存在
/www
之外

例如,上载的图像、资源文件或包含数据库连接参数或任何内容的文件

浏览器在中调用的php文件

/var/www/
中的其他资源文件

/var/outside/

通过这样做,即使启用了目录列表,文件也会自动对外部世界不可见。

您的include目录中需要一个.htaccess文件,该文件将从外部不可用:

Options -Indexes
Order allow,deny
Deny from all
或者对于Apache2.4

Options -Indexes
Require all denied

另一个解决方案是将include移到/home/username/include

为什么不能将其移到webroot之外?这是首选方案。我还建议对该特定文件使用.htaccess块。您应该创建一个API来访问它。类似于
domain.com/config/get/
。然后,如果您想保护它,您可以添加一些查询,如令牌等。@Farkie您不能将其移动到web根目录之外
,htaccess
就是其中之一!我全忘了。感谢您的回答(我无法将文件移到web根目录之外)
Options -Indexes
Require all denied