美文网首页传送门爱分享
工作一年的三两事(一)

工作一年的三两事(一)

作者: 梦里都是你的柔情似水 | 来源:发表于2016-12-30 21:41 被阅读52次

    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相关知识储备太少(安装中踩过太多坑,端口问题、白名单问题、防火墙等等),
    - 安装软件、扩展等没着重留意版本问题,毕竟都是几个相互配合使用,一些版本问题确实会卡你很久,特别是你不留意的时候
    - 工作经验、经验、验。。。
    

    总之努力努力再努力!

    相关文章

      网友评论

      本文标题:工作一年的三两事(一)

      本文链接:https://www.haomeiwen.com/subject/yixvvttx.html