升级macOS BigSur后无法访问localhost的调试与修复求助
macOS BigSur升级后Apache与localhost访问故障排查方案
问题描述
升级macOS BigSur后系统运行不畅,核心问题是无法访问localhost:

BigSur预装Apache、PHP和MySQL,但实际无法正常运行。
现状与报错信息
- 升级前已自行安装Apache和PHP5,当前不知如何调试
- 不想用Homebrew,担心打乱pip/conda安装的Python Web服务器路径
- 执行启动命令
sudo apachectl start返回:
/System/Library/LaunchDaemons/org.apache.httpd.plist: service already loaded Load failed: 37: Operation already in progress
- 检查状态时得到核心报错:
[pid 2444] AH06665: No code signing authority for module at /usr/local/php5/libphp5.so specified in LoadModule directive. Proceeding with loading process, but this will be an error condition in a future version of macOS. httpd: Syntax error on line 555 of /private/etc/apache2/httpd.conf: Syntax error on line 8 of /private/etc/apache2/other/+php-osx.conf: Cannot load /usr/local/php5/libphp5.so into server: dlopen(/usr/local/php5/libphp5.so, 10): Symbol not found: _unixd_config Referenced from: /usr/local/php5/libphp5.so Expected in: /usr/sbin/httpd in /usr/local/php5/libphp5.so
- 当前环境版本信息:
apachectl -v Server version: Apache/2.4.53 (Unix) Server built: Apr 26 2022 20:36:30 php -v WARNING: PHP is not recommended PHP is included in macOS for compatibility with legacy software. Future versions of macOS will not include PHP. PHP 7.3.29-to-be-removed-in-future-macOS (cli) (built: Sep 6 2021 05:14:39) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.29, Copyright (c) 1998-2018 Zend Technologies
一、调试Apache故障
查看Apache运行状态
用apachectl fullstatus或apachectl status替代Linux的systemctl status apache查看状态。要实时监控错误日志,执行:tail -f /private/var/log/apache2/error_log解决PHP5加载失败问题
报错明确是旧版PHP5的libphp5.so与系统预装Apache不兼容(缺失符号_unixd_config),且PHP5已不再被BigSur支持,直接禁用旧模块:- 编辑Apache主配置:
sudo nano /private/etc/apache2/httpd.conf - 找到包含
/usr/local/php5/libphp5.so的LoadModule行,在行首加#注释掉 - 编辑
/private/etc/apache2/other/+php-osx.conf,同样注释掉加载libphp5.so的行 - 保存后重启Apache:
sudo apachectl restart
- 编辑Apache主配置:
切换到系统预装PHP7.3
系统自带PHP7.3,启用它:- 编辑
httpd.conf,找到#LoadModule php7_module libexec/apache2/libphp7.so,去掉前面的# - 重启Apache:
sudo apachectl restart - 验证PHP是否生效:在
/Library/WebServer/Documents目录下新建info.php,内容为<?php phpinfo(); ?>,访问localhost/info.php查看输出
- 编辑
二、恢复localhost访问
完成上述步骤后,若仍无法访问localhost:
- 检查端口占用:执行
sudo lsof -i :80查看是否有其他进程占用80端口 - 重置Apache配置:备份现有配置后恢复默认:
之后重新启用PHP7模块,重启Apachesudo cp /private/etc/apache2/httpd.conf /private/etc/apache2/httpd.conf.backup sudo cp /private/etc/apache2/original/httpd.conf /private/etc/apache2/httpd.conf
三、配置自定义user.local域名
修改hosts映射
sudo nano /etc/hosts添加一行:
127.0.0.1 user.local,保存退出配置Apache虚拟主机
- 编辑
httpd.conf,取消注释以下两行:#LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so #Include /private/etc/apache2/extra/httpd-vhosts.conf - 编辑
/private/etc/apache2/extra/httpd-vhosts.conf,添加虚拟主机配置:<VirtualHost *:80> DocumentRoot "/Users/你的用户名/Sites" ServerName user.local ErrorLog "/private/var/log/apache2/user.local-error_log" CustomLog "/private/var/log/apache2/user.local-access_log" common <Directory "/Users/你的用户名/Sites"> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> </VirtualHost> - 替换
你的用户名为实际Mac用户名,保存后重启Apache
- 编辑
四、启用Sites目录服务
- 开启用户目录模块
编辑httpd.conf,取消注释:#LoadModule userdir_module libexec/apache2/mod_userdir.so #Include /private/etc/apache2/extra/httpd-userdir.conf - 配置用户目录规则
编辑/private/etc/apache2/extra/httpd-userdir.conf,取消注释:#UserDir Sites #Include /private/etc/apache2/users/*.conf - 创建用户权限配置
在/private/etc/apache2/users/目录下创建你的用户名.conf,内容:<Directory "/Users/你的用户名/Sites/"> Options Indexes MultiViews FollowSymLinks AllowOverride All Require all granted </Directory> - 设置目录权限
chmod 755 /Users/你的用户名/Sites - 重启Apache后,访问
http://user.local或http://localhost/~你的用户名即可访问Sites目录内容
内容的提问来源于stack exchange,提问作者user305883
相关产品推荐
相关产品推荐

