這次改用Debian APT套件包裝, 使用vmware安裝了一台Debian 9虛擬機, 盡量不去用編譯方式安裝PHP 7, 但是傳統MySQL PECL仍是要編譯的, 以下為安裝PHP 7.0與mysql傳統函數支援步驟
安裝PHP 7.0
apt-get install php7.0 php7.0-cgi php7.0-dev php7.0-mysql
請注意這裡的php7.0-mysql是mysqli
從PECL找到傳統mysql函數(http://git.php.net/?p=pecl/database/mysql.git;a=summary), 找最新版本並下載它
curl -o mysql.tar.gz 'http://git.php.net/?p=pecl/database/mysql.git;a=snapshot;h=647c933b6cc8f3e6ce8a466824c79143a98ee151;sf=tgz'
解壓縮與編譯
tar zxvf mysql.tar.gz
cd mysql (實際為mysql-開頭的子目錄)
phpize
./configure
make
make install
這樣mysql.so會安裝到/usr/lib/php/20151012/目錄之下
接著到/etc/php/7.0/mods-available/目錄產生mysql.ini
cd /etc/php/7.0/mods-available/
nano mysql.ini
將以下內容貼入並存檔
; configuration for php mysql module
; priority=20
extension=mysql.so
啟用mysql傳統函數
phpenmod mysql
查看mysql傳統函數是否正確啟用
php -m
大致類似像這樣的輸出
[PHP Modules]
calendar
Core
ctype
date
dom
exif
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
mysql
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zlib
[Zend Modules]
Zend OPcache
這台機器的PHP 7.0就能用mysql與mysqli函數
或是更詳細的資訊
php -i | grep -i 'mysql'
以下為輸出範例:
Additional .ini files parsed => /etc/php/7.0/cli/conf.d/10-mysqlnd.ini,
/etc/php/7.0/cli/conf.d/20-mysql.ini,
/etc/php/7.0/cli/conf.d/20-mysqli.ini,
/etc/php/7.0/cli/conf.d/20-pdo_mysql.ini,
mysql
MySQL Support => enabled
Client API version => mysqlnd 5.0.12-dev - 20150407 - $Id: b5c5906d452ec590732a93b051f3827e02749b83 $
mysql.allow_local_infile => On => On
mysql.allow_persistent => On => On
mysql.connect_timeout => 60 => 60
mysql.default_host => no value => no value
mysql.default_password => no value => no value
mysql.default_port => no value => no value
mysql.default_socket => no value => no value
mysql.default_user => no value => no value
mysql.max_links => Unlimited => Unlimited
mysql.max_persistent => Unlimited => Unlimited
mysql.trace_mode => Off => Off
mysqli
MysqlI Support => enabled
Client API library version => mysqlnd 5.0.12-dev - 20150407 - $Id: b5c5906d452ec590732a93b051f3827e02749b83 $
mysqli.allow_local_infile => On => On
mysqli.allow_persistent => On => On
mysqli.default_host => no value => no value
mysqli.default_port => 3306 => 3306
mysqli.default_pw => no value => no value
mysqli.default_socket => no value => no value
mysqli.default_user => no value => no value
mysqli.max_links => Unlimited => Unlimited
mysqli.max_persistent => Unlimited => Unlimited
mysqli.reconnect => Off => Off
mysqli.rollback_on_cached_plink => Off => Off
mysqlnd
mysqlnd => enabled
Version => mysqlnd 5.0.12-dev - 20150407 - $Id: b5c5906d452ec590732a93b051f3827e02749b83 $
Loaded plugins => mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_sha256_password
API Extensions => mysql,mysqli,pdo_mysql
mysqlnd statistics =>
PDO drivers => mysql
pdo_mysql
PDO Driver for MySQL => enabled
Client API version => mysqlnd 5.0.12-dev - 20150407 - $Id: b5c5906d452ec590732a93b051f3827e02749b83 $
pdo_mysql.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock