日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

給php開啟mysql擴(kuò)展(筆記有詳細(xì)記錄)

 土心園 2018-05-16
復(fù)制代碼
http://www.cnblogs.com/wangtao_20/archive/2011/03/07/1973621.html
總結(jié)的方向:在linux下php掛接mysql.so擴(kuò)展的方法 問題背景:平常我們都是先安裝mysql,然后才能去安裝php。假如先安裝php,后安裝mysql,由于php需要連接mysql,因而在php引擎中需要配置使用mysql.so擴(kuò)展。這時需要手動編譯生成mysql.so擴(kuò)展。 當(dāng)前問題:在上面情況下,使用phpize能否實現(xiàn)掛接mysql.so擴(kuò)展? 實踐結(jié)論:使用phpize工具能夠生成mysql.so,但是必須加上"--with-mysql=mysql客戶端的路徑"。也就是mysql.so模塊必須用到mysql客戶端才行。 可以這樣理解,mysql.so內(nèi)部會調(diào)用mysql客戶端,以便實現(xiàn)連接mysql數(shù)據(jù)庫服務(wù)器。 我們常常用到的mysql_connect()可能就是調(diào)用了mysql客戶端才能完成連接數(shù)據(jù)庫的操作。 一、為什么書中一般是常常是這樣的順序安裝:先安裝mysql,然后再安裝php,很少看到先安裝php,后安裝mysql? 這樣做。是基于下面原因: 安裝好mysql后。mysql.so這個模塊才能生成。記得一個細(xì)節(jié):在安裝php的時候,需要提供mysql的路徑。由php幫助編譯生成mysql.so模塊。mysql.so這個模塊是在安裝好php的時候生成的。生成這個模塊需要用到一個東西: mysql客戶端。如果先安裝php,后安裝mysql。那么無法按照原來的方式(由php幫助生成mysql.so模塊)掛接mysql.so。通過實踐,發(fā)現(xiàn)使用phpize工具生成mysql.so可以解決這個問題。 二、實踐生成mysql.so的過程 大體思路:需要用到php的源碼包才行。通過源碼包中提供的phpize文件(一個專門掛接php擴(kuò)展的工具) 2011.3.6測試成功 使用命令: 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ī)則:去哪個目錄下運(yùn)行phpize文件,那么就會在該目錄下生成一個configure文件。 第三步:運(yùn)行剛才生成的configure文件 命令: ./configure --with-php-config=/usr/local/php524/bin/php-config --with-mysql=/usr/local/mysql/ 這里最關(guān)鍵的是通過--with-mysql參數(shù)告訴mysql客戶端的位置。這樣才能生成mysql.so。 實驗的時候,沒有加這個參數(shù),結(jié)果錯誤: ./configure --with-php-config=/usr/local/php524/bin/php-config 第四步:編譯生成.so文件。最終要的東西 make make install 結(jié)束///////////////////////////////////////////////////////// 第五步:配置php引擎加載該擴(kuò)展 省略 補(bǔ)充一下:就是去php.ini文件中修改一下配置,加載mysql.so這個擴(kuò)展(這個擴(kuò)展文件要放到php指定的擴(kuò)展目錄下面去) 第六步:測試php引擎是否成功加載該擴(kuò)展 編寫文件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 通過這樣的方式可以確認(rèn),php引擎已經(jīng)成功加載了mysql.so擴(kuò)展。 第七步:已經(jīng)生成的mysql.so。編寫php代碼測試是否能連接mysql 第六步成功后,已經(jīng)知道php引擎已經(jīng)成功加載了mysql.so擴(kuò)展。還要確認(rèn)生成的擴(kuò)展是否能正常使用。為什么?因為編譯失敗還是成功都能生成.so的擴(kuò)展。一般是這樣的:.so擴(kuò)展里面其實封裝的就是一些函數(shù),供我們調(diào)用 。假如有些函數(shù)沒有生成,最后也會得到.so的擴(kuò)展。也許它的.so模塊內(nèi)部是不完整的,都說不定。之前做一個支付接口的時候就是這樣的問題。.so模塊里面是用c++語言封裝的函數(shù)。模塊雖然已生成。但是并不能正常運(yùn)行 。函數(shù)出現(xiàn)了異常,看不到任何錯誤。后來形成一個觀念:不能以為,編譯生成了.so文件,就認(rèn)為是成功的 測試.so是否能用變得非常必要?,F(xiàn)在測試一下生成的mysql.so是否能用。 編寫如下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) 說明,編譯生成后的mysql.so擴(kuò)展能夠正常使用了。 啟發(fā):如果開始安裝mysql和php的順序不對,后面就會增加了很多麻煩。所以,在實際情況中,有點經(jīng)驗的都會"會先安裝php,再安裝mysql",這樣避免了掛接的問題。所以,實際中需要這樣做很少。 假如這樣一種情況就有用了:php與mysql都已經(jīng)安裝了。后面根據(jù)需要,想安裝oracle等其他數(shù)據(jù)庫,php已經(jīng)安裝了。編譯生成一個其他數(shù)據(jù)庫的擴(kuò)展,思路也是一樣的
復(fù)制代碼

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多