Mac OS 12.7.5下XAMPP Apache无法启动:语法错误求助
问题背景
尝试启动XAMPP 8.1.17中的Apache Web Server但失败,已尝试以下操作:
- 在终端执行
sudo killall httpd - 将httpd.conf文件中的端口从80修改为8080
- 执行
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist,返回错误:Unload failed: 5: Input/Output error - 关闭蓝牙
- 在活动监视器中终止所有HTTPD进程
执行sudo apachectl stop时收到关键错误:
httpd: Syntax error on line 522 of /Applications/XAMPP/xamppfiles/etc/httpd.conf: Syntax error on line 3 of /Applications/XAMPP/xamppfiles/etc/extra/httpd-xampp.conf: Cannot load modules/libphp.so into server: dlopen(/Applications/XAMPP/xamppfiles/modules/libphp.so, 0x000A): Symbol not found: (_iconv)
Referenced from: '/Applications/XAMPP/xamppfiles/modules/libphp.so'
Expected in: '/Applications/XAMPP/xamppfiles/lib/libiconv.2.dylib'
解决步骤
1. 检查libiconv文件完整性
进入XAMPP的lib目录:
cd /Applications/XAMPP/xamppfiles/lib
查看libiconv.2.dylib是否存在及大小是否正常:
ls -l libiconv.2.dylib
若文件缺失或大小异常,直接从XAMPP官方重新下载对应版本安装包,选择保留现有配置文件后覆盖安装。
2. 修复动态库链接
若文件存在但链接异常,先备份原文件:
sudo cp libiconv.2.dylib libiconv.2.dylib.bak
重新建立符号链接:
sudo ln -sf libiconv.2.dylib libiconv.dylib
再检查libphp.so的依赖路径是否正确:
otool -L /Applications/XAMPP/xamppfiles/modules/libphp.so | grep iconv
若输出路径不是XAMPP自身lib目录,临时修改环境变量后启动Apache:
export DYLD_LIBRARY_PATH=/Applications/XAMPP/xamppfiles/lib:$DYLD_LIBRARY_PATH sudo /Applications/XAMPP/xamppfiles/bin/apachectl start
3. 重置Apache扩展配置
重置httpd-xampp.conf文件:
sudo cp /Applications/XAMPP/xamppfiles/etc/extra/httpd-xampp.conf.default /Applications/XAMPP/xamppfiles/etc/extra/httpd-xampp.conf
验证httpd.conf中对该文件的引用路径是否正确:
grep -n "httpd-xampp.conf" /Applications/XAMPP/xamppfiles/etc/httpd.conf
确认路径无误后重新启动Apache。
4. 彻底卸载重装XAMPP
若以上方法均无效,彻底卸载现有XAMPP:
sudo rm -rf /Applications/XAMPP rm -rf ~/.bitnami/stackman
从官网下载XAMPP 8.1.17 Mac版本,按默认路径完成安装。
内容的提问来源于stack exchange,提问作者Murphy1976

