PHP Laravel NGINX html css Bootstrap Python Symfony Apache Windows linux jquery Django ASP vanilla Slim vagrant docker Homestead MySQL Redis Git SVN ssh Root vim PhpStorm Pycharm sass less PHP Laravel android html css Vue Angular React NGINX html css Javascript

Apache2 Could not open configuration file 错误解决办法

原创

原创不易 ~ 转载请注明出处哦

在使用Apache2 vhosts的时候,我们需要在/etc/apache2/sites-available文件夹下创建多个站点配置文件,然后使用a2ensite来激活对应站点。

而如果你需要停止站点,可以使用a2dissite命令。然而有时候,在停止了站点之后,我们使用systemctl restart apache2来重启Apache2的时候会出现类似以下的错误:

Syntax error on line xxx of /etc/apache2/apache2.conf
Could not open configuration file
Action 'configtest' failed

那么这是什么原因造成的呢?

首先我们要清楚,在使用a2ensite的时候,我们创建了从sites-availablesites-enabled的符号链接(symbolic link)。如果你用过nignx那么你一定熟悉以下命令:

$ ln -s /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/

同理,a2ensite与上述命令达到了相同作用。

所以我们先来检查一下/etc/apache2/sites-enabled,如果你发现失效的symbolic link,那么你基本上就已经知道错误出在哪了。
我们把sites-available中的conf文件删除后,由于某些原因,sites-enabled中失效的symbolic link未能被清除(可能是你先删掉了conf文件再运行了a2dissite),所以才出现上述错误。

那么解决办法也很简单,只需要删除失效的symbolic link。在Linux系统下ls后显示为红色的文件,或着那些你已经停止了的站点,却发现在sites-enabled中仍然存在的文件:

$ ls /etc/apache2/sites-enabled
$ sudo rm /etc/apache2/sites-enabled/invalid.file

请将invalid.file用你发现的失效链接文件名替换。

接着重启Apache2即可:

$ sudo systemctl restart apache2

如果你使用Nginx,也出现配置文件错误的情况,除了配置文件语法错误以外,也可以先检查一下/etc/nginx/sites-enabled文件夹,看看有没有失效的符号链接。


正在加载验证码......
请先完成验证