Apple M3本地PHP 8.2连接PostgreSQL触发503错误求助
以下是针对你遇到问题的实用排查步骤:
确认PDO_PGSQL扩展是否正常加载
打开Rosetta终端(右键终端→新建窗口使用Rosetta),执行php -m,查看输出中是否包含pdo_pgsql和pgsql。如果没有,说明Intel版PHP未安装该扩展,运行对应版本的安装命令,例如PHP8.2可执行brew install php@8.2-pgsql。检查PostgreSQL监听配置
找到Intel版PostgreSQL@13的配置文件,路径一般为/usr/local/var/postgresql@13/postgresql.conf,打开后确认listen_addresses设置为'*'或'127.0.0.1',避免仅设置localhost导致IPv4连接异常。修改后执行brew services restart postgresql@13重启服务。验证PHP与PostgreSQL架构匹配
分别执行file $(which php)和file $(which psql),确认两者输出均为Mach-O 64-bit executable x86_64,确保都是Intel架构,避免Rosetta兼容冲突。检查Web服务器与PHP-FPM的架构一致性
如果使用PHP-FPM,执行lipo -info $(which php-fpm)确认其为Intel架构。若Web服务器是Apple Silicon版本,建议换成Intel Brew安装的版本,例如在Rosetta终端执行brew install httpd安装Apache。查看具体错误信息
在测试代码开头添加:error_reporting(E_ALL); ini_set('display_errors', 1);或者直接查看Web服务器错误日志,Apache日志路径通常为
/usr/local/var/log/httpd/error_log,Nginx为/usr/local/var/log/nginx/error.log,通过日志定位503的具体触发原因。
内容的提问来源于stack exchange,提问作者Jul6art

