Apache 模块 - 如何检查 httpd.conf 中是否存在指令
Apache module - How to check existence of directive in httpd.conf
我正在尝试编写一个示例 Apache 模块来读取其文件路径在 httpd.conf 中指定的配置文件,如下所示:
<Location ~ /(?!.*\.(png|jpeg|jpg|gif|bmp|tif)$)>
SetInputFilter SAMPLE_INPUT_FILTER
SetOutputFilter SAMPLE_OUTPUT_FILTER
ConfigFilePath "/etc/httpd/conf.d/sample/sample.config"
</Location>
在命令记录结构中,我这样做:
static const command_rec config_check_cmds[] =
{
AP_INIT_TAKE1( "ConfigFilePath", read_config_file, NULL, OR_ALL, "sample config"),
{ NULL }
};
我也设置了:
module AP_MODULE_DECLARE_DATA SAMPLE_module = {
STANDARD20_MODULE_STUFF,
create_dir_config, /* create per-dir config structures */
NULL, /* merge per-dir config structures */
NULL, /* create per-server config structures */
NULL, /* merge per-server config structures */
config_check_cmds, /* table of config file commands */
sample_register_hooks /* register hooks */
};
我可以成功读取配置文件路径。现在我想检查如果 httpd.conf 中没有指定 "ConfigFilePath",当我使用 "service httpd restart"
时它会在控制台显示错误
我该怎么做?
您将注册一个 ap_hook_post_config
挂钩并在那里验证所需的设置。请注意,该挂钩被调用两次,如此处答案中所述:Init modules in apache2
在此处查看示例 post 配置挂钩实现:http://svn.apache.org/repos/asf/httpd/httpd/tags/2.3.0/modules/examples/mod_example_hooks.c
我正在尝试编写一个示例 Apache 模块来读取其文件路径在 httpd.conf 中指定的配置文件,如下所示:
<Location ~ /(?!.*\.(png|jpeg|jpg|gif|bmp|tif)$)>
SetInputFilter SAMPLE_INPUT_FILTER
SetOutputFilter SAMPLE_OUTPUT_FILTER
ConfigFilePath "/etc/httpd/conf.d/sample/sample.config"
</Location>
在命令记录结构中,我这样做:
static const command_rec config_check_cmds[] =
{
AP_INIT_TAKE1( "ConfigFilePath", read_config_file, NULL, OR_ALL, "sample config"),
{ NULL }
};
我也设置了:
module AP_MODULE_DECLARE_DATA SAMPLE_module = {
STANDARD20_MODULE_STUFF,
create_dir_config, /* create per-dir config structures */
NULL, /* merge per-dir config structures */
NULL, /* create per-server config structures */
NULL, /* merge per-server config structures */
config_check_cmds, /* table of config file commands */
sample_register_hooks /* register hooks */
};
我可以成功读取配置文件路径。现在我想检查如果 httpd.conf 中没有指定 "ConfigFilePath",当我使用 "service httpd restart"
时它会在控制台显示错误我该怎么做?
您将注册一个 ap_hook_post_config
挂钩并在那里验证所需的设置。请注意,该挂钩被调用两次,如此处答案中所述:Init modules in apache2
在此处查看示例 post 配置挂钩实现:http://svn.apache.org/repos/asf/httpd/httpd/tags/2.3.0/modules/examples/mod_example_hooks.c