4.編譯安裝PHP7的MySQL擴展mysql.so
第一版:
問題:PHP7已經徹底廢棄了傳統的mysql_connect()函數,源碼安裝包里,也不再提供傳統mysql函數庫的支持(PHP推薦使用mysqli或者pdo_mysql)。這樣帶來的問題是,運行老的PHP程序,比如WordPress,就會出現數據庫連接失敗的情況,表現出來的特征就是這個讓人抓狂的錯誤:Fatal error: Uncaught Error: Call to undefined function mysql_connect()。這時,我們要么選擇回退到PHP5.6,或者選擇安裝PHP7的mysql擴展。
下載PHP7的傳統mysql擴展:
PHP7的源碼包里面沒有mysql的代碼,需要另外下載,下載地址:
http://git.php.net/?p=pecl/database/mysql.git;a=summary
或者
可以使用WinSCP將下載包傳到Linux系統。隨便哪個目錄都可以,然后運行下面的命令:
我用的ubuntu,先要安裝autoconf這個工具:
apt install autoconf
然后:
tar zxf mysql-230a828.tar.gz cd mysql-230a828 /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysql=/usr/local/mysql make && make install
然后修改php.ini
添加extension=mysql.so
DONE!
補充一個經驗:
wordpress程序默認關閉了php的debug輸出,這時如果出現連接數據庫錯誤,屏幕一篇空白,什么都沒有,我們需要打開php的debug開關來查看具體是什么錯誤,具體在wp-config.php文件里面:
/* 將默認的false修改為true */ define('WP_DEBUG', true);
第二版:
相對與PHP5,PHP7的最大變化之一是移除了mysql擴展,推薦使用mysqli或者pdo_mysql,實際上在PHP5.5開始,PHP就着手開始准備棄用mysql擴展,如果你使用mysql擴展,可能看到過這樣的提示”Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in”.所以在以后的程序中,為了保持兼容性,要盡量減少使用mysql擴展用於數據庫連接.
作為運維人員來說,既想使用PHP7來提升服務器的效率,又要保證老的程序能夠運行,如何做呢?
1.去php網站上下載mysql擴展,http://git.php.net/?p=pecl/database/mysql.git;a=summary
2.解壓並使用phpize工具初始化,編譯:---文件包是
- #解壓
- tar xzvf mysql-45881bd.tar.gz
- #進入mysql擴展目錄 from www.mfbuluo.com
- cd mysql-45881bd/
- #使用phpize初始化,我的phpize在/opt/目錄
- /opt/php/bin/phpize
- #編譯mysql擴展,使用mysql native driver作為mysql鏈接庫
- ./configure --with-php-config=/opt/php/bin/php-config --with-mysql=mysqlnd
- make && make install
3.接下來,我們直接編輯php.ini文件,把mysql.so拷貝到php.ini的extension_dir中,然后在php.ini中加入extension=mysql.so
4.重啟php
成功之后,用phpinfo即可看到mysql擴展的信息
相對於PHP5,都說PHP7有非常大的性能提升.。
第三版:
ubuntu 17.10 上為php7安裝mysql擴展
相對與PHP5,PHP7的最大變化之一是移除了mysql擴展,推薦使用mysqli或者pdo_mysql,實際上在PHP5.5開始,PHP就着手開始准備棄用mysql擴展,如果你使用mysql擴展,可能看到過這樣的提示”Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in”.所以在以后的程序中,為了保持兼容性,要盡量減少使用mysql擴展用於數據庫連接.
作為運維人員來說,既想使用PHP7來提升服務器的效率,又要保證老的程序能夠運行,如何做呢?
安裝環境:
系統:ubuntu 17.10
PHP版本:php7.1
安裝步驟:
1.去php網站上下載mysql擴展,http://git.php.net/?p=pecl/database/mysql.git;a=summary
選擇最近的一個版本,我選擇的是2017-11-01更新的版本
2.解壓並使用phpize工具初始化,編譯:---文件包是
#解壓
tar xzvf mysql-45881bd.tar.gz
#進入mysql擴展目錄
cd mysql-45881bd/
#使用phpize初始化,我的phpize在/opt/目錄
phpize
#編譯mysql擴展,使用mysql native driver作為mysql鏈接庫
./configure
make && make install
3.由於ubuntu 17.10版本的特殊性,接下來,添加mysql.ini擴展配置文件
#進入擴展目錄
cd /etc/php/7.1/mods-availabel/
#添加mysql.ini
sudo cp mysqli.ini mysql.ini
sudo vi mysql.ini
4.啟用mysql擴展,sudo phpenmod mysql
5.重啟apache服務, sudo service apache2 restart
6.使用phpinfo查看確認