工作一年的三兩事(一)

2016年馬上就要過去了,回首在公司的一年中,工作遇到了不少坑,也學(xué)到了不少新知識,至少對于我來說是新知識_,特此騰出時間記錄一下,程序員、語死早,一些話表達不清楚只能靠代碼和截圖了,見諒見諒。

本篇博文,分三個篇幅:PHP、Ionic、AngularJs。都是在工作項目中接觸到的,還有nodejs,但是接觸時間比較短,還是先多學(xué)學(xué)。

一、拍黃片(PHP)

php是我第一門接觸的語言,一直認為是世界上最好的語言,嗯,沒有之一,手動滑稽

linux環(huán)境下thinkPHP(3.2.3)框架通過PDO鏈接微軟云的Azure SQLDatabase數(shù)據(jù)庫

這是我工作中遇到的第一個大坑,微軟云官網(wǎng)上并沒有l(wèi)inux環(huán)境下鏈接PHP的示例,只有windows的,區(qū)別在于PHP的擴展安裝。
問遍度娘,Linux下鏈接Azure SQL Database數(shù)據(jù)庫,需要安裝freetds軟件,以及unixODBC,因為切換數(shù)據(jù)庫的原因,freetds需要配合unixODBC來使用
貼下環(huán)境:

PHP版本:5.4.25

Linux版本:centos 7

Azure SQL Database數(shù)據(jù)庫版本:

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,這里是根據(jù)你的數(shù)據(jù)庫版本來配置的(Azure SQL Database應(yīng)該和普通的sqlserver數(shù)據(jù)庫有些區(qū)別),貼一張圖,借鑒別人的博文
Linux環(huán)境PHP5.5以上連接SqlServer2008【全網(wǎng)最經(jīng)典無錯版】

查看版本信息
./bin/tsql –C
接著修改配置項
vim etc/freetds.conf

這里只在文件末尾部分增加了數(shù)據(jù)庫的配置屬性

[qwer]

host = XXXXXXX.database.chinacloudapi.cn//數(shù)據(jù)庫鏈接地址

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   //生產(chǎn)庫

Port = 1433

配置文件就修改這三個,就可以測試數(shù)據(jù)庫的鏈接,不過記得去微軟云后臺加上IP白名單, 當時遇到一個坑,因為Azure SQL Database數(shù)據(jù)庫版本過低問題,freetds死活連不上。
數(shù)據(jù)庫是很久之前就已經(jīng)在使用了,PHP鏈接還是頭一回,所以沒發(fā)現(xiàn)這個問題,后來提交工單,找技術(shù)支援才測出來是版本原因,此前一度懷疑自己的鏈接方式、插件、擴展安裝是否正確等,還好連上了。
鏈接的截圖就不貼了,這個百度就行,freetds和unixODBC的bin/isql都可以通過命令行鏈接數(shù)據(jù)庫。

然后給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',//數(shù)據(jù)庫類型

'DB_USER' => 'sa',//用戶名

'DB_PWD'=> 'pwd',//密碼

'DB_PORT' => '1433',//端口

'DB_PREFIX' => '',//數(shù)據(jù)庫表前綴

'DB_CHARSET'=> 'utf8',//字符集

'DB_DSN' => "odbc:test_db",//odbc是linux的unixODBC驅(qū)動,test _db是unixODBC里的配置文件odbc.ini里的一個塊的名字(以數(shù)據(jù)庫為命名),定義了數(shù)據(jù)庫和數(shù)據(jù)源

然后就可以正常的通過M()等來進行增刪改查了,之前說到切換數(shù)據(jù)庫,就是上面的配置項,貌似只使用freetds是不能切換數(shù)據(jù)庫的

PS:應(yīng)該是Azure SQL Database的某些設(shè)置,當時通過freetds的命令行鏈接數(shù)據(jù)庫,進行切換數(shù)據(jù)庫時報錯了,所以就安裝unixODBC來配合使用了

到這里關(guān)于【linux環(huán)境下thinkPHP框架通過PDO鏈接微軟云的Azure SQL Database數(shù)據(jù)庫】就基本結(jié)束了,剛?cè)肼毠揪鸵驗镻HP鏈接數(shù)據(jù)庫的問題折騰了半個月之久,原因有三:

- linux相關(guān)知識儲備太少(安裝中踩過太多坑,端口問題、白名單問題、防火墻等等),
- 安裝軟件、擴展等沒著重留意版本問題,畢竟都是幾個相互配合使用,一些版本問題確實會卡你很久,特別是你不留意的時候
- 工作經(jīng)驗、經(jīng)驗、驗。。。

總之努力努力再努力!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容