我也遇到过类似的情况,但找不到合适的解决办法。
这是我的用例:
我在笔记本电脑上托管的每个网站都使用名为 www-example1.conf 的文件进行配置。此文件的位置是 /etc/apache2/sites-enabled/www-example1.conf
该文件的内容为:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName www-example1
ServerAlias www.www-example1
DocumentRoot /home/myuser/www/www-example1/public_html
ErrorLog /home/myuser/www/www-example1/error.log
CustomLog /home/myuser/www/www-example1/access.log combined
</VirtualHost>
apache 用户/组是 www-data。www-example1 文件夹归 myuser:www-data 所有。www-example1 文件夹具有 755 权限。此文件夹中有 error.log 和 access.log 文件,每个文件都具有 755 权限,归 myuser:www-data 所有。
问题是 apache 无法在系统启动时启动。
当我使用时sudo systemctl status apache2
,结果是:
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2020-06-18 22:58:00 EEST; 12min ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 3044 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE)
iun 18 22:58:00 SIA-PC apachectl[3067]: (2)No such file or directory: AH02291: Cannot access directory '/home/myuser/www/www-example1/' for error log of vhost defined at /etc/apache2/sites-enabled/www-example1.conf:1
iun 18 22:58:00 SIA-PC apachectl[3067]: AH00014: Configuration check failed
iun 18 22:58:00 SIA-PC apachectl[3044]: Action 'start' failed.
iun 18 22:58:00 SIA-PC apachectl[3044]: The Apache error log may have more information.
iun 18 22:58:00 SIA-PC systemd[1]: apache2.service: Control process exited, code=exited, status=1/FAILURE
iun 18 22:58:00 SIA-PC systemd[1]: apache2.service: Failed with result 'exit-code'.
iun 18 22:58:00 SIA-PC systemd[1]: Failed to start The Apache HTTP Server.
如果我使用手动启动 apache sudo service apache2 start
,则一切都正常。
我该怎么做才能使 apache 在启动时启动?
谢谢你!
我已经尝试过了此解决方案,但无济于事。我真的很想保持我的文件夹结构不变。
答案1
我有同样的问题
Ubuntu 20.04 适用于libphp7.4.so和 apache2 一起工作libphp7.2.so 所以要修复它你需要更改 apache2 的配置,这是我的做法:
1-您可以通过测试 apache 并写入来检查此问题:apache2ctl configtest
输出消息:
apache2:/etc/apache2/apache2.conf 第 146 行语法错误:/etc/apache2/mods-enabled/php7.2.load 第 3 行语法错误:无法将 /usr/lib/apache2/modules/libphp7.2.so 加载到服务器:/usr/lib/apache2/modules/libphp7.2.so:无法打开共享对象文件:没有此文件或目录操作“configtest”失败。Apache 错误日志可能包含更多信息。
2-打开文件php7.2.加载你gedit /etc/apache2/mods-enabled/php7.2.load
可以看到
加载模块 php7_module /usr/lib/apache2/modules/libphp7.2.so
3- 转到/usr/lib/apache2/modules/
并检查 libphp 的版本ls
,它将是libphp7.4.so
4-返回文件并更改版本:
加载模块 php7_module /usr/lib/apache2/modules/libphp7.4.so
保存并重启 apache2
systemctl start apache2.service
检查状态:
systemctl status apache2.service
就这样 :)