PHP连接Docker的SQLserver

发布于 2021-05-13 00:07 ,所属分类:区块连和PHP开发学习资料

SQL Server 又称MSSQL,是Microsoft 开发的一个关系型数据库管理系统,也是世界上最为常用的数据库之一。

SQL Server 被设计为在服务器上运行,使多个使用者可以同时访问相同的数据,用户通常通过应用程序来访问。以下是PHP访问SQLserver的例子。

安装MSSQL

#1拉取镜像
dockerpullmicrosoft/mssql-server-linux

#2创建并运行容器
dockerrun--nameMSSQL_1433-m512M-e'ACCEPT_EULA=Y'-e'SA_PASSWORD=Pwd123456!'-p1433:1433-dmicrosoft/mssql-server-linux

#3查看想开的端口是否已开
firewall-cmd--query-port=1433/tcp

#4开永久端口号
firewall-cmd--add-port=1433/tcp--permanent

#5重新载入配置
firewall-cmd--reload

#6进入容器
dockerexec-itMSSQL_1433/bin/bash

#7sqlcmd连接MSSQL
/opt/mssql-tools/bin/sqlcmd-Slocalhost-USA-P'Pwd123456!'

连接MSSQL

#PHP连接MSSQL
<?php

header("Content-Type:text/html;charset=utf-8");

try{
$con=newPDO("sqlsrv:server=103.121.92.38;database=testDB","SA","Pwd123456111!");
echo"数据库连接成功<br>";
}
catch(PDOException$e)
{
echo$e->getMessage();
}

错误参考

#Errorresponsefromdaemon:Container...isnotrunning
解决:查看日志docker logs ae7f0ee5221b

#sqlservr:Thisprogramrequiresamachinewithatleast2000megabytesofmemory
解决方法:
1 查找MSSQL配置文件:find /-name mssql
2 进入配置目录:/var/lib/docker/overlay2/.../diff/opt/mssql/bin
3 备份配置文件:cp sqlservr sqlservr.bak
4使用python修改内存限制代码:python
5修改的程序
>>>oldfile=open("sqlservr.old","rb").read()
>>>oldfile.find("\x00\x94\x35\x77")
>>>newfile=oldfile.replace(b"\x00\x94\x35\x77",b"\x00\x80\x84\x1e")
>>>open("sqlservr","wb").write(newfile)
>>>exit()

#couldnotfinddriver
解决方法:
1下载MSSQL驱动
https://docs.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server?view=sql-server-2017
2下载安装后,把对应版本的dll复制到php的ext目录下
3在php.ini开启mssql扩展
4查看mssql驱动是否开启,
echophpinfo();
5搜索sqlsrv
出现sqlsrv,pgsql,odbc,mysql,sqlite就说明开启成功了
6下载ODBC驱动
https://docs.microsoft.com/zh-cn/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver15
7安装后重启服务

本文首发于gongzhong号《计算机程序》,一个专注于项目和技术分享的gongzhong号!项目源码领取:gongzhong号后台回复 1024

相关资源