我会重启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”,并且以前的问题有几个条目,但此任务不会创建任何新的... ...
问题出在哪里?
这是SSL证书中的错误,并且vHost配置中的“error.log”路径已更改。
如果您不需要SSL(我不是因为我正在运行本地系统),只需禁用所有 vHost HTTPS / SSL通过命令行进行配置以进行换行。
答案 0 :(得分:19)
我也遇到了类似的问题,即service apache2 reload
失败但没有打印出有用的信息。这是因为/etc/init.d/apache
中的脚本(至少在Debian上)会运行它运行的apache2ctl configtest
命令的输出来清理Apache配置。
为失败提供更有意义的解释的简单解决方案是自己再次运行apache2ctl configtest
,这会将(希望有用的)错误消息打印到控制台。
答案 1 :(得分:16)
配置文件中的语法错误似乎会导致问题。我通过访问目录并从命令行中将其排除,找到了问题所在。
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
答案 2 :(得分:8)
在apache虚拟主机中,您必须定义错误日志文件的路径。 当apache2第一次启动时,它会自动创建它。
例如apache virtualhost中的ErrorLog“/var/www/www.localhost.com/log-apache2/error.log”..
答案 3 :(得分:3)
在XAMPP上使用
D:\xampp\apache\bin>httpd -t -D DUMP_VHOSTS
这会在您的虚拟主机配置中产生错误
答案 4 :(得分:1)
我在Raspberry Pi上遇到了这个问题。在尝试了除重新安装以外的所有方法后,一时兴起,我删除了/var/run/apache2/apache2.pid。我重新启动了Apache,一切正常。不确定如何解释。
答案 5 :(得分:0)
我今天遇到了这个问题。我从RHEL 6复制了整个/ etc / httpd并将其放到CentOS 6系统上,并确保安装了所有RPM。
任何时候apache都会启动,它会默默地失败。花了strace
找到了罪魁祸首:我使用 CustomLog 来调用目标系统上没有安装的程序。一旦我安装了预期的程序,Apache HTTP Server就会启动。
答案 6 :(得分:0)
尝试禁用SElinux或为SElinux配置虚拟主机
使用SElinux进行配置 https://muchbits.com/apache-selinux-vhosts.html
禁用SElinux https://linuxize.com/post/how-to-disable-selinux-on-centos-7/
答案 7 :(得分:0)
如果日志文件中没有条目,那么我们可以尝试使用以下命令调试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
答案 8 :(得分:0)
您可以通过以下方式使其起作用:
删除/var/run/apache2/apache2.pid,然后检查其是否正常工作
您可以禁用SELinux,然后检查其是否有效。您可以使用https://linux4one.com/how-to-disable-selinux-on-centos-7/教程
答案 9 :(得分: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#