我有一个我正在用 mod_perl 2 编写的 Web 应用程序。(它是一个自定义处理程序模块,而不是注册表或 perlrun 脚本。)我想在服务器初始化时设置几个配置选项,最好是从配置文件中设置。我遇到的问题是我没有找到一个为我的应用程序的配置文件传递文件名的好地方。
我第一次尝试加载“./app.conf”,但当前目录不是模块的位置,所以它不可预测且容易出错。或者,我必须假设一些路径——相对的或绝对的。这是不灵活的,如果主机操作系统分布发生变化,可能会出现问题。我不想对路径进行硬编码(不过,如果没有更好的方法,/etc 中的某些内容可能是可以接受的)。
我也尝试过 PerlSetVar,但在请求时间之前该值不可用。虽然这是可行的,但这意味着我可能会在每个子(线程)初始化时至少从磁盘读取一次配置文件。我宁愿在服务器初始化时加载并拥有一个不可变的静态哈希,它是创建子时生成的环境的一部分。
我考虑使用 config.pl,但这意味着我要么有一个带有一个选项的 config.pl 来配置在哪里找到 app.conf 文件,要么我将选项本身移到 config.pl 并要求最终用户尊重 Perl设置选项时的语法。未来的用户将成为内部管理员,所以这并非不合理,但它比我想要的要复杂。
那么我错过了什么?有什么好的选择吗?