linux php pdo dblib,PDO_DBLIB (MSSQL) on Ubuntu Server

本文详细记录了在Ubuntu系统中安装PDO_DBLIB扩展以连接到MSSQL服务器的过程,包括遇到的问题及解决方法,涉及到的步骤包括安装依赖包、手动下载和配置PDO_DBLIB,并解决配置过程中遇到的FreeTDS和php_pdo_driver.h文件路径问题。
摘要由CSDN通过智能技术生成

Czasem zachodzi potrzeba skorzystania z innego

sterownika baz danych niż mysql. O ile sprawa wydawać by się mogła

prosta i sprowadzać do wykonania jednej komendy

pecl install, o tyle w przypadku sterownika do mssql nie

jest to takie oczywiste.

Autor: Mateusz Dąbrowski

Zaczynamy od zainstalowania potrzebnych pakietów:

# apt-get install php5-dev freetds-dev

Następnie próbujemy zainstalować rozszerzenie PDO_DBLIB które

obsługuje Mssql server

# sudo pecl install PDO_DBLIB

pear/PDO_DBLIB requires PHP extension “pdo” (version

>= 1.0)

No valid packages found

install failed

Jak widać ostrzymujemy błąd, mimo że mamy zainstalowaną

odpowiednią wersję PDO. Będziemy musieli zainstalować rozszerzenie

ręcznie. Pobieramy więc paczkę PDO_DBLIB-1.0.tgz,

możemy to zrobić na dwa sposoby: za pomocą wget lub pecl

download PDO_DBLIB.Rozpakowujemy pobraną paczkę i

próbujemy zbudować rozszerzenie.

# tar zxvf PDO_DBLIB-1.0.tgz

# pecl build

configure: error: Cannot find FreeTDS in known installation

directories

`/home/mateusz/PDO_DBLIB-1.0/configure’ failed

Otrzymujemy kolejny błąd. Tym razem widzimy, że jest problem ze

ściezką do biblioteki FreeTDS. U mnie biblioteka ta jest

zainstalowana w ‘/usr/share/freetds’, odpalamy więc skrypt

configure z odpowiednim parametrem

# cd PDO_DBLIB-1.0

# ./configure –with-pdo-dblib=/usr/share/freetds

configure: error: Directory /usr/share/freetds is not a

FreeTDS installation directory

Kolejny błąd tym razem jak dla mnie mniej zrozumiały. Długo

szukałem i rozwiązaniem okazało się dodanie dwóch plików:

# sudo touch /usr/share/freetds/include/tds.h

# sudo touch /usr/share/freetds/lib/libtds.a

Kolejna próba i kolejny błąd:

# ./configure –with-pdo-dblib=/usr/share/freetds

configure: error: Cannot find php_pdo_driver.h

Skrypt konfiguracyjny nie może znaleźć pliku nagłówka

php_pdo_driver.h (u mnie /usr/include/php5/ext). Gdy zajrzymy do

skryptu configure zobaczymy, że skrypt szuka tego

pliku w złym miejscu:

1

2

3

...

if test

-f $abs_srcdir/include/php/ext/pdo/php_pdo_driver.h then

...

Dodanie linka symbolicznego do odpowiedniego katalogu załatwi

sprawę:

# ln -s /usr/include/php5/ext

Teraz już wszystko powinno zadziałać.

# ./configure

–with-pdo-dblib=/usr/share/freetds# make

Build complete.

Teraz przechodzimy do folderu modules gdzie

mamy skompilowane pdo_dblib.so i kopiujemy je do

odpowiedniego folderu u mnie ‘/usr/lib/php5/20060613+lfs’ pozostaje

jeszcze dopisanie extension=pdo_dblib.so do pliku

php.ini i restart apacha.

Konfiguracja zenda

Jeśli używamy Zend Framework, a ja akurat w tym projekcie

używam, dostaniemy pewnie taki komunikat.

Message: The mssql driver is not currently

installed

Rozwiązaniem jest dodanie w konfiguracji następującej

linijki:

db.config.pdoType = dblib

Dalej standardowa konstrukcja:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值