Docker环境下PHP容器连接MSSQL容器遇网络错误求助
解决Docker中PHP容器连接MSSQL容器的网络问题
问题核心
你遇到的HYT00登录超时、08001网络连接失败错误,根源是PHP容器内的localhost指向容器自身,而非MSSQL容器。Docker Compose默认会创建独立的内部网络,服务间需通过服务名互相访问,而你用SSMS能连接是因为宿主机的localhost映射了MSSQL容器的端口,和PHP容器的网络空间不互通。
修复步骤
1. 修改PHP连接代码的服务器地址
将$serverName从localhost替换为Docker Compose配置里的MSSQL服务名mssql:
$serverName = "mssql"; $connectionInfo = array("Database"=>$database, "UID"=>"sa", "PWD"=>"Password@", "CharacterSet"=>'UTF-8'); $conn = sqlsrv_connect($serverName, $connectionInfo);
2. 额外验证项(若问题仍存在)
- 检查MSSQL容器状态:执行
docker logs mssql,确认日志中出现SQL Server is now ready for client connections - 确保PHP容器已安装依赖:检查PHP的Dockerfile是否安装了
msodbcsql17驱动和sqlsrv扩展 - 补全MSSQL容器环境变量:在Docker Compose的
mssql服务中添加必要初始化参数,确保SQL Server正常启动:mssql: container_name: mssql build: context: ./docker/mssql ports: - "1433:1433" volumes: - .:/var/www environment: - ACCEPT_EULA=Y - SA_PASSWORD=Password@
内容的提问来源于stack exchange,提问作者J.Do
相关产品推荐
相关产品推荐

