日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

在linux下php挂接mysql.so扩展的方法

發(fā)布時(shí)間:2025/3/20 数据库 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在linux下php挂接mysql.so扩展的方法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

總結(jié)的方向:在linux下php掛接mysql.so擴(kuò)展的方法

問(wèn)題背景:平常我們都是先安裝mysql,然后才能去安裝php。假如先安裝php,后安裝mysql,由于php需要連接mysql,因而在php引擎中需要配置使用mysql.so擴(kuò)展。這時(shí)需要手動(dòng)編譯生成mysql.so擴(kuò)展。

當(dāng)前問(wèn)題:在上面情況下,使用phpize能否實(shí)現(xiàn)掛接mysql.so擴(kuò)展?

實(shí)踐結(jié)論:使用phpize工具能夠生成mysql.so,但是必須加上"--with-mysql=mysql客戶端的路徑"。也就是mysql.so模塊必須用到mysql客戶端才行。
可以這樣理解,mysql.so內(nèi)部會(huì)調(diào)用mysql客戶端,以便實(shí)現(xiàn)連接mysql數(shù)據(jù)庫(kù)服務(wù)器。
我們常常用到的mysql_connect()可能就是調(diào)用了mysql客戶端才能完成連接數(shù)據(jù)庫(kù)的操作。



一、為什么書(shū)中一般是常常是這樣的順序安裝:先安裝mysql,然后再安裝php,很少看到先安裝php,后安裝mysql?

這樣做。是基于下面原因:
安裝好mysql后。mysql.so這個(gè)模塊才能生成。記得一個(gè)細(xì)節(jié):在安裝php的時(shí)候,需要提供mysql的路徑。由php幫助編譯生成mysql.so模塊。mysql.so這個(gè)模塊是在安裝好php的時(shí)候生成的。生成這個(gè)模塊需要用到一個(gè)東西:

mysql客戶端。如果先安裝php,后安裝mysql。那么無(wú)法按照原來(lái)的方式(由php幫助生成mysql.so模塊)掛接mysql.so。通過(guò)實(shí)踐,發(fā)現(xiàn)使用phpize工具生成mysql.so可以解決這個(gè)問(wèn)題。





二、實(shí)踐生成mysql.so的過(guò)程

大體思路:需要用到php的源碼包才行。通過(guò)源碼包中提供的phpize文件(一個(gè)專(zhuān)門(mén)掛接php擴(kuò)展的工具)



2011.3.6測(cè)試成功
使用命令: ?phpize --with-mysql=/usr/local/mysql/(mysql的安裝路徑)


第一步:進(jìn)入php源碼中的"ext/mysql"目錄下
命令:cd

第二步:在當(dāng)前目錄下運(yùn)行phpize

命令:/usr/local/php524/bin/phpize

phpize的規(guī)則:去哪個(gè)目錄下運(yùn)行phpize文件,那么就會(huì)在該目錄下生成一個(gè)configure文件。

第三步:運(yùn)行剛才生成的configure文件

命令: ./configure --with-php-config=/usr/local/php524/bin/php-config --with-mysql=/usr/local/mysql/
這里最關(guān)鍵的是通過(guò)--with-mysql參數(shù)告訴mysql客戶端的位置。這樣才能生成mysql.so。

實(shí)驗(yàn)的時(shí)候,沒(méi)有加這個(gè)參數(shù),結(jié)果錯(cuò)誤:
./configure --with-php-config=/usr/local/php524/bin/php-config


第四步:編譯生成.so文件。最終要的東西
make
make install

結(jié)束/


第五步:配置php引擎加載該擴(kuò)展

省略

補(bǔ)充一下:就是去php.ini文件中修改一下配置,加載mysql.so這個(gè)擴(kuò)展(這個(gè)擴(kuò)展文件要放到php指定的擴(kuò)展目錄下面去)


第六步:測(cè)試php引擎是否成功加載該擴(kuò)展

編寫(xiě)文件phpinfo.php,內(nèi)容是:
<?php
ehco phpinfo();
?>

運(yùn)行后,可以看到有如下信息顯示:

mysql
MySQL Support ? ?enabled
Active Persistent Links ? ? 0
Active Links ? ? 0
Client API version ? ? 5.1.55
MYSQL_MODULE_TYPE ? ? no value
MYSQL_SOCKET ? ? /tmp/mysql.sock
MYSQL_INCLUDE ? ? no value
MYSQL_LIBS ? ? no value

通過(guò)這樣的方式可以確認(rèn),php引擎已經(jīng)成功加載了mysql.so擴(kuò)展。



第七步:已經(jīng)生成的mysql.so。編寫(xiě)php代碼測(cè)試是否能連接mysql

第六步成功后,已經(jīng)知道php引擎已經(jīng)成功加載了mysql.so擴(kuò)展。還要確認(rèn)生成的擴(kuò)展是否能正常使用。為什么?因?yàn)榫幾g失敗還是成功都能生成.so的擴(kuò)展。一般是這樣的:.so擴(kuò)展里面其實(shí)封裝的就是一些函數(shù),供我們調(diào)用

。假如有些函數(shù)沒(méi)有生成,最后也會(huì)得到.so的擴(kuò)展。也許它的.so模塊內(nèi)部是不完整的,都說(shuō)不定。之前做一個(gè)支付接口的時(shí)候就是這樣的問(wèn)題。.so模塊里面是用c++語(yǔ)言封裝的函數(shù)。模塊雖然已生成。但是并不能正常運(yùn)行

。函數(shù)出現(xiàn)了異常,看不到任何錯(cuò)誤。后來(lái)形成一個(gè)觀念:不能以為,編譯生成了.so文件,就認(rèn)為是成功的

測(cè)試.so是否能用變得非常必要。現(xiàn)在測(cè)試一下生成的mysql.so是否能用。


編寫(xiě)如下php代碼:

<?php
$conn = mysql_connect("localhost","root","");
mysql_select_db("mysql",$conn);
$results = mysql_query("select * from user");
$row = mysql_fetch_array($results);
var_dump($row);

?>

得到結(jié)果(部分):

array
?0 => string 'localhost' (length=9)
?'Host' => string 'localhost' (length=9)
?1 => string 'root' (length=4)
?'User' => string 'root' (length=4)
?2 => string '' (length=0)
?'Password' => string '' (length=0)
?3 => string 'Y' (length=1)
?'Select_priv' => string 'Y' (length=1)
?4 => string 'Y' (length=1)
?'Insert_priv' => string 'Y' (length=1)
?5 => string 'Y' (length=1)
?'Update_priv' => string 'Y' (length=1)

說(shuō)明,編譯生成后的mysql.so擴(kuò)展能夠正常使用了。


啟發(fā):如果開(kāi)始安裝mysql和php的順序不對(duì),后面就會(huì)增加了很多麻煩。所以,在實(shí)際情況中,有點(diǎn)經(jīng)驗(yàn)的都會(huì)"會(huì)先安裝php,再安裝mysql",這樣避免了掛接的問(wèn)題。所以,實(shí)際中需要這樣做很少。
假如這樣一種情況就有用了:php與mysql都已經(jīng)安裝了。后面根據(jù)需要,想安裝oracle等其他數(shù)據(jù)庫(kù),php已經(jīng)安裝了。編譯生成一個(gè)其他數(shù)據(jù)庫(kù)的擴(kuò)展,思路也是一樣的


轉(zhuǎn)載于:https://blog.51cto.com/xiaofengge315/1383592

總結(jié)

以上是生活随笔為你收集整理的在linux下php挂接mysql.so扩展的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。