php開啟mysql擴充套件

2021-07-31 22:14:42 字數 3648 閱讀 4795

對於lamp的安裝,我一般情況下都是選擇,先安裝php再安裝mysql,php原始碼中自帶了mysqlnd,使用起來很方便。

但是其實並不是說一定要使用mysqlnd

比如我安裝php的時候沒有開啟mysql的擴充套件,此時又當如何給php新增功能呢?

我們可以通過php擴充套件的普遍安裝方法操作,也就是使用phpize生成configure檔案,然後make && make install最後在php.ini中新增載入模組的指令

以下內容來自網路,請自行測試

總結的方向:在linux下php掛接mysql.so擴充套件的方法

問題背景:平常我們都是先安裝mysql,然後才能去安裝php。假如先安裝php,後安裝mysql,由於php需要連線mysql,因而在php引擎中需要配置使用mysql.so擴充套件。這時需要手動編譯生成mysql.so擴充套件。

當前問題:在上面情況下,使用phpize能否實現掛接mysql.so擴充套件?

實踐結論:使用phpize工具能夠生成mysql.so,但是必須加上"--with-mysql=mysql客戶端的路徑"。也就是mysql.so模組必須用到mysql客戶端才行。

可以這樣理解,mysql.so內部會呼叫mysql客戶端,以便實現連線mysql資料庫伺服器。

我們常常用到的mysql_connect()可能就是呼叫了mysql客戶端才能完成連線資料庫的操作。

一、為什麼書中一般是常常是這樣的順序安裝:先安裝mysql,然後再安裝php,很少看到先安裝php,後安裝mysql?

這樣做。是基於下面原因:

安裝好mysql後。mysql.so這個模組才能生成。記得乙個細節:在安裝php的時候,需要提供mysql的路徑。由php幫助編譯生成mysql.so模組。mysql.so這個模組是在安裝好php的時候生成的。生成這個模組需要用到乙個東西:

mysql客戶端。如果先安裝php,後安裝mysql。那麼無法按照原來的方式(由php幫助生成mysql.so模組)掛接mysql.so。通過實踐,發現使用phpize工具生成mysql.so可以解決這個問題。

二、實踐生成mysql.so的過程

大體思路:需要用到php的原始碼包才行。通過原始碼包中提供的phpize檔案(乙個專門掛接php擴充套件的工具)

2011.3.6測試成功

使用命令: phpize --with-mysql=/usr/local/mysql/(mysql的安裝路徑)

第一步:進入php原始碼中的"ext/mysql"目錄下

命令:cd

第二步:在當前目錄下執行phpize

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

phpize的規則:去哪個目錄下執行phpize檔案,那麼就會在該目錄下生成乙個configure檔案。

第三步:執行剛才生成的configure檔案

命令: ./configure --with-php-config=/usr/local/php524/bin/php-config --with-mysql=/usr/local/mysql/

這裡最關鍵的是通過--with-mysql引數告訴mysql客戶端的位置。這樣才能生成mysql.so。

實驗的時候,沒有加這個引數,結果錯誤:

./configure --with-php-config=/usr/local/php524/bin/php-config

第四步:編譯生成.so檔案。最終要的東西

make

make install

結束/第五步:配置php引擎載入該擴充套件

省略補充一下:就是去php.ini檔案中修改一下配置,載入mysql.so這個擴充套件(這個擴充套件檔案要放到php指定的擴充套件目錄下面去)

第六步:測試php引擎是否成功載入該擴充套件

編寫檔案phpinfo.php,內容是:

<?php

ehco phpinfo();

?>

執行後,可以看到有如下資訊顯示:

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

通過這樣的方式可以確認,php引擎已經成功載入了mysql.so擴充套件。

第七步:已經生成的mysql.so。編寫php**測試是否能連線mysql

第六步成功後,已經知道php引擎已經成功載入了mysql.so擴充套件。還要確認生成的擴充套件是否能正常使用。為什麼?因為編譯失敗還是成功都能生成.so的擴充套件。一般是這樣的:.so擴充套件裡面其實封裝的就是一些函式,供我們呼叫

。假如有些函式沒有生成,最後也會得到.so的擴充套件。也許它的.so模組內部是不完整的,都說不定。之前做乙個支付介面的時候就是這樣的問題。.so模組裡面是用c++語言封裝的函式。模組雖然已生成。但是並不能正常執行

。函式出現了異常,看不到任何錯誤。後來形成乙個觀念:不能以為,編譯生成了.so檔案,就認為是成功的

測試.so是否能用變得非常必要。現在測試一下生成的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);

?>

得到結果(部分):

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擴充套件能夠正常使用了。

啟發:如果開始安裝mysql和php的順序不對,後面就會增加了很多麻煩。所以,在實際情況中,有點經驗的都會"會先安裝php,再安裝mysql",這樣避免了掛接的問題。所以,實際中需要這樣做很少。

假如這樣一種情況就有用了:php與mysql都已經安裝了。後面根據需要,想安裝oracle等其他資料庫,php已經安裝了。編譯生成乙個其他資料庫的擴充套件,思路也是一樣的

PHP開啟mysqli擴充套件

這個問題困擾了我很久,call to undefined function mysqli connect 解決這個問題需要開啟mysqli擴充套件 開啟mysqli擴充套件需要這兩個步驟缺一不可 1.在php.ini中搜尋php mysqli.dll 2.設定extension dir指令 note...

PHP開啟PDO擴充套件

php pdo擴充套件 pdopdo是php資料物件 php object 的縮寫,pdo是乙個第三方類,預設以整合到php中,使用pdo可以輕鬆對接各種不同型別的資料庫,且操作方式和方法呼叫都基本一樣.pdo作用是統一各種資料庫的訪問介面.開啟pdo擴充套件 開啟mysql擴充套件為例 在php....

php開啟curl擴充套件

配置方法 1 拷貝php目錄中的libeay32.dll 和 ssleay32.dll 兩個檔案到 system32 目錄。2 修改php.ini 配置好 extension dir 去掉 extension php curl.dll 前面的分號。php下擴充套件php curl.dll的安裝 已經...