我们正在尝试让 https 在 Apache 上运行。它位于 /usr/local/apache2/bin
/usr/local/apache2/bin/apachectl start
如果不使用https我可以运行。
但是,如果我在 httpd.conf 中取消注释这一行:
Include conf/extra/httpd-ssl.conf
然后就/usr/local/apache2/bin/apachectl start
不行了。它一直给我一个错误
# /usr/local/apache2/bin/apachectl start
Syntax error on line 56 of /usr/local/apache2/conf/extra/httpd-ssl.conf:
Invalid command 'SSLPassPhraseDialog', perhaps misspelled or defined by a module not included in the server configuration
httpd-ssl.conf 中的行是
SSLPassPhraseDialog builtin
我们还在 /usr/sbin/ 安装了 httpd。当我取消注释上面的行时,该位置的 tomcat 运行良好。两者都运行版本 2.2.15,仅相差 3 个月(我想这会有所不同)。
# /usr/local/apache2/bin/httpd -v
Server version: Apache/2.2.15 (Unix)
Server built: Jul 17 2017 13:25:42
# /usr/sbin/httpd -v
Server version: Apache/2.2.15 (Unix)
Server built: Mar 22 2017 06:52:55
有谁知道为什么这种情况发生在 /usr/local/apache2/bin 而不是 /usr/sbin/ 或者知道如何解决这个语法错误?我现在正在做的解决方法是使用 /usr/sbin 但我想知道其原因,以防将来遇到它。
答案1
Apache 的版本安装在哪里?
# which -a apache2
/usr/sbin/apache2
# which -a httpd
/usr/sbin/httpd
假设它在你的 $PATH 上
...如何解决这个语法错误?
正如帮助/手册中所述,您可以(并且应该)为每个版本使用不同的配置;
/usr/sbin/httpd -h 2>&1 | grep ServerConfigFile
-f file : specify an alternate ServerConfigFile
...SSL 密码短语对话框...
您可以“列出可用的配置指令”
/usr/sbin/httpd -L | grep -A 2 SSLPassPhraseDialog
SSLPassPhraseDialog (mod_ssl.c)
SSL dialog mechanism for the pass phrase query ('builtin', '|/path/to/pipe_program', or 'exec:/path/to/cgi_program')
Allowed in *.conf only outside <Directory>, <Files>, <Location>, or <If>