37

我会重新启动 Apache2 但出现错误

$ sudo service apache2 start

Starting web server apache2

Action 'start' failed.
The Apache error log may have more information.

但是“/var/log/apache2/”中的所有错误日志都是空的。

编辑:文件位于“/var/log/apache2”,之前的问题中有几个条目,但此任务不会创建任何新的 etry ...

问题出在哪里?


我已经解决了问题!

这是 SSL 证书中的错误,并且在 vHost 配置中更改了“error.log”的路径。

如果您不需要 SSL(我不需要,因为我正在运行本地系统)只需通过命令行禁用配置中的所有 vHost HTTPS/SSL 条目以进行输出。

4

11 回答 11

22

我也遇到了类似的问题,即service apache2 reload失败但没有打印任何有用的信息。这是因为/etc/init.d/apache(至少在 Debian 上)中的脚本会吃掉apache2ctl configtest它运行以清理 Apache 配置的命令的输出。

获得对失败更有意义的解释的一个简单解决方案是apache2ctl configtest自己再次运行,这会将(希望有用的)错误消息打印到控制台。

于 2014-10-21T07:21:55.297 回答
19

配置文件中的语法错误似乎会导致问题。通过转到目录并从命令行执行它,我发现了问题所在。

httpd -e info 

这给了我错误

Syntax error on line 156 of D:/.../Apache Software Foundation/Apache2.2/conf/httpd.conf:
Invalid command 'PHPIniDir', perhaps misspelled or defined by a module not included in the server configuration
于 2015-02-08T10:47:48.937 回答
14

谢谢,蒂姆!对我来说是个大笨蛋。其他一些其他细节可能会有所帮助:

(Ubuntu 12.04 上的 Apache2)

我有两个站点在同一台服务器上运行,并且刚刚更新了其中一个的 SSL 证书。重新启动服务器后,我收到了那个神秘的消息,但两个站点都没有工作(显然)。我也在配置文件中找到了日志文件的重定向。我跟踪并发现了问题(在我刚刚更新的站点的日志文件中)。

我的配置文件位于 /etc/apache2/sites-available

vim 或 cat 文件 (cat {filename}) 并查找ErrorLog行。这会告诉您在服务器上的位置。cat 该文件和我发现的错误消息是:

[error] Unable to configure RSA server private key
[error] SSL Library Error: 185073780 error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch
[warn] RSA server certificate CommonName (CN) `<snip>.com' does NOT match server name!?

我已将我的一个证书文件复制到错误的目录中。我只是将它移动到正确的目录,下次启动时一切都很好。(提示:这些文件应该在哪里也在配置文件中;)

于 2014-03-18T21:31:41.927 回答
9

在 apache 虚拟主机中,您必须定义错误日志文件的路径。当 apache2 第一次启动时,它会自动创建它。

例如 apache 虚拟主机中的 ErrorLog "/var/www/www.localhost.com/log-apache2/error.log"。

于 2013-09-24T08:04:24.290 回答
3

在 XAMPP 上使用

D:\xampp\apache\bin>httpd -t -D DUMP_VHOSTS

这将在您的虚拟主机配置中产生错误

于 2017-01-26T12:32:28.853 回答
1

如果我们在日志文件中没有条目,那么我们可以尝试使用以下命令调试 apache2:

$ apache2 -S

或者

$ apache2 -e debug

可能的输出:

[Fri Apr 05 04:04:59.682880 2019] [core:warn] [pid 11086] AH00111: Config variable ${APACHE_RUN_DIR} is not defined
apache2: Syntax error on line 80 of /etc/apache2/apache2.conf: DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot
于 2019-04-05T02:09:29.170 回答
1

我在 Raspberry Pi 上遇到了这个问题。在尝试了除了重新安装之外的所有方法之后,我一时兴起删除了/var/run/apache2/apache2.pid。我重新启动了 Apache,一切正常。不知道如何解释。

于 2018-08-14T11:45:26.673 回答
0

尝试禁用 SElinux 或为 SElinux 配置虚拟主机

使用 SElinux 进行配置 https://muchbits.com/apache-selinux-vhosts.html

禁用 SElinux https://linuxize.com/post/how-to-disable-selinux-on-centos-7/

于 2018-12-07T07:13:15.347 回答
0

您有以下方法可以使其工作:

  1. 删除 /var/run/apache2/apache2.pid 然后检查它是否工作

  2. 您可以禁用 SELinux,然后检查它是否有效。您可以使用https://linux4one.com/how-to-disable-selinux-on-centos-7/教程永久或临时禁用 SELinux

于 2019-06-11T10:14:31.997 回答
0

在 Linux 上的 Apache 上,由于未设置环境变量的问题,可能会出现无法检查配置的问题。这是一个误报,仅在从命令行运行时发生apache2 -S(请参阅@simhumileco 的先前答案)。例如Config variable ${APACHE_RUN_DIR} is not defined.

为了从命令行修复这个运行source /etc/apache2/envvars,然后运行 ​​`apache2 -S' 来解决真正的(可能的)问题。

root@fileserver:~# apache2 -S
[Thu Apr 30 10:42:06.822719 2020] [core:warn] [pid 24624] AH00111: Config variable ${APACHE_RUN_DIR} is not defined
apache2: Syntax error on line 80 of /etc/apache2/apache2.conf: DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot
root@fileserver:~# source /etc/apache2/envvars
root@fileserver:/root# apache2 -S
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
<----snip---->
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex ldap-cache: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33
root@fileserver:/root#
于 2020-04-30T08:44:07.383 回答
0

我今天遇到了这个确切的问题。我从 RHEL 6 复制了整个 /etc/httpd 并将其放到 CentOS 6 系统上,并确保安装了所有 RPM。

任何时候启动 apache,它都会默默地失败。strace找到了罪魁祸首:我正在使用CustomLog调用一个未安装在目标系统上的程序。一旦我安装了预期的程序,Apache HTTP Server 就会立即启动。

于 2017-02-15T18:49:56.840 回答