2016年马上就要过去了,回首在公司的一年中,工作遇到了不少坑,也学到了不少新知识,至少对于我来说是新知识_,特此腾出时间记录一下,程序员、语死早,一些话表达不清楚只能靠代码和截图了,见谅见谅。
本篇博文,分三个篇幅:PHP、Ionic、AngularJs。都是在工作项目中接触到的,还有nodejs,但是接触时间比较短,还是先多学学。
一、拍黄片(PHP)
php是我第一门接触的语言,一直认为是世界上最好的语言,嗯,没有之一,手动滑稽
linux环境下thinkPHP(3.2.3)框架通过PDO链接微软云的Azure SQLDatabase数据库
这是我工作中遇到的第一个大坑,微软云官网上并没有linux环境下链接PHP的示例,只有windows的,区别在于PHP的扩展安装。
问遍度娘,Linux下链接Azure SQL Database数据库,需要安装freetds软件,以及unixODBC,因为切换数据库的原因,freetds需要配合unixODBC来使用
贴下环境:
PHP版本:5.4.25
Linux版本:centos 7
Azure SQL Database数据库版本:
Freetds版本:0.95.79
unixODBC版本:2.3.4
首先安装 unixODBC
PS:路径忽略
cd unixODBC-2.3.4
./configure --prefix=/usr/local/unixODBC
make && make install> unixODBC
然后查看版本信息
./bin/isql –version
接着安装freetds
./configure --prefix=/usr/local/freetds--with-unixodbc=/usr/local/unixODBC --enable-msdblib --with-tdsver=7.0
make && make install
这里--with-tdsver=7.0我选择的是7.0,这里是根据你的数据库版本来配置的(Azure SQL Database应该和普通的sqlserver数据库有些区别),贴一张图,借鉴别人的博文
Linux环境PHP5.5以上连接SqlServer2008【全网最经典无错版】
查看版本信息
./bin/tsql –C
接着修改配置项
vim etc/freetds.conf
这里只在文件末尾部分增加了数据库的配置属性
[qwer]
host = XXXXXXX.database.chinacloudapi.cn//数据库链接地址
port = 1433//端口
tds version = 7.0//版本
client charset =UTF-8//字符集
接着修改unixODBC的两个配置文件
vim etc/odbcinst.ini
修改如下:
[TDS]
Description = MS-SQLServer
Driver = /usr/local/freetds/lib/libtdsodbc.so
#Setup = /usr/local/freetds/lib/libtds.so //这个没找到 就注释掉了,水平有限没去深究,因为链接成功了
FileUsage = 1
修改另外一个配置文件
vim etc/odbc.ini
修改如下:
[test_db] //pdo_odbc中使用的链接名称
Driver = TDS
Servername = qwer //freetds中的配置名称
Database = test _db //测试库
Port = 1433
[prod_db]
Driver = TDS
Servername = qwer
Database = prod_db //生产库
Port = 1433
配置文件就修改这三个,就可以测试数据库的链接,不过记得去微软云后台加上IP白名单, 当时遇到一个坑,因为Azure SQL Database数据库版本过低问题,freetds死活连不上。
数据库是很久之前就已经在使用了,PHP链接还是头一回,所以没发现这个问题,后来提交工单,找技术支援才测出来是版本原因,此前一度怀疑自己的链接方式、插件、扩展安装是否正确等,还好连上了。
链接的截图就不贴了,这个百度就行,freetds和unixODBC的bin/isql都可以通过命令行链接数据库。
然后给PHP打上pdo_odbc扩展
安装pdo_odbc扩展就比较简单了,进入到PHP的源码包,找到pdo_odbc,
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-odbc=/usr/local/freetds/
make && make install
然后修改php.ini
extension=pdo_odbc.so
再重启apachephpinfo查看一下即可
接着是thinkPHP的配置文件
//'配置项'=>'配置值'
'DB_TYPE' => 'pdo',//数据库类型
'DB_USER' => 'sa',//用户名
'DB_PWD'=> 'pwd',//密码
'DB_PORT' => '1433',//端口
'DB_PREFIX' => '',//数据库表前缀
'DB_CHARSET'=> 'utf8',//字符集
'DB_DSN' => "odbc:test_db",//odbc是linux的unixODBC驱动,test _db是unixODBC里的配置文件odbc.ini里的一个块的名字(以数据库为命名),定义了数据库和数据源
然后就可以正常的通过M()等来进行增删改查了,之前说到切换数据库,就是上面的配置项,貌似只使用freetds是不能切换数据库的
PS:应该是Azure SQL Database的某些设置,当时通过freetds的命令行链接数据库,进行切换数据库时报错了,所以就安装unixODBC来配合使用了
到这里关于【linux环境下thinkPHP框架通过PDO链接微软云的Azure SQL Database数据库】就基本结束了,刚入职公司就因为PHP链接数据库的问题折腾了半个月之久,原因有三:
- linux相关知识储备太少(安装中踩过太多坑,端口问题、白名单问题、防火墙等等),
- 安装软件、扩展等没着重留意版本问题,毕竟都是几个相互配合使用,一些版本问题确实会卡你很久,特别是你不留意的时候
- 工作经验、经验、验。。。
总之努力努力再努力!