我不喜欢在 document_root 下存储站点范围的加密密钥和数据库访问信息,所以我使用 Apache 的 SetEnv 和 conf.d 下的 php.ini 文件将它们与代码库分开。最大的问题是,哪个更好?在 apache vhost 文件 ( SetEnv SITEKEY 'oinkoink!'
) 或 conf.d/xxx.ini 文件 ( db_pass="oink?"
) 下的环境变量中?也许还有别的?
优点和缺点:
设置环境:
+存储在 DOCUMENT_ROOT 之外
+只有给定的 vhost 可以访问
-PHPINFO() 可见 -黑客需要直接访问/上传漏洞利用到文件
get_cfg_var:
+存储在 DOCUMENT_ROOT 之外
+PHPINFO() 不可见
-(非常糟糕) 包含所有定义的 ini 变量,因此每个 vhost 都可以通过 (ini_get_all) 查询它们,因此在共享 vhost 环境中不可用