1. 程式人生 > >單獨編譯安裝php的mysqli,pdo_mysql,mysqlnd擴充套件

單獨編譯安裝php的mysqli,pdo_mysql,mysqlnd擴充套件

首先安裝mysqli擴充套件

cd /usr/local/src/php-7.17/ext/
cd mysqli
/usr/local/php/bin/phpize

./configure --prefix=/usr/local/related/mysqli --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/local/mysql/bin/mysql_config

make時提示這個錯誤:

/usr/local/src/php-7.1.7/ext/mysqli/mysqli_api.c:36:47: 致命錯誤:ext/mysqlnd/mysql_float_to_double.h:沒有那個檔案或目錄
 #include "ext/mysqlnd/mysql_float_to_double.h"
這是因為當前是在mysqli這個目錄下進行的編譯,這個目錄下是肯定沒有ext/mysqlnd/mysql_float_to_double.h這個目錄及檔案的,知道了問題的原因那麼解決就簡單了
cd /usr/local/src/php-7.17
在這個目錄下從新編譯安裝即可:
./ext/mysqli/configure --prefix=/usr/local/related/mysqli --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/local/mysql/bin/mysql_config
make && make install

此外還有兩種解決方案:
1,
/usr/local/src/php-7.17/ext/mysqli
# vi mysqli_api.c
把第36行的
#include "ext/mysqlnd/mysql_float_to_double.h"
修改為
#include "/usr/local/src/php-7.17/ext/mysqlnd/mysql_float_to_double.h"

2,
,ln -s mysql/include/* usr/include
ln -s php/include/* usr/include



當成功後會如下:
[

[email protected] php-7.1.7]# make install
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/
Installing header files:          /usr/local/php/include/php/

然後ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/

[[email protected] php-7.1.7]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/
mysqli.so  opcache.a  opcache.so
就看到mysqli.so
然後開啟php.ini
增加:extension=mysqli.so

然後編輯php.ini
extension=mysqli.so

重啟php-fpm

service php-fpm restart



make時如果提示:
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
則說明沒有安裝antoconf,安裝即可:
cd /usr/local/src
# wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz
# tar -zvxf autoconf-2.62.tar.gz
# cd autoconf-2.62/
# ./configure --prefix=/usr/local/related/autoconf M4=/usr/local/related/m4/bin/m4   --如果不指定M4的地址,那麼需要把M4的bin目錄加入環境變數/etc/profile
make && make install

然後將autoconf/bin加入到環境變數再次執行/usr/local/php/bin/phpize就可以生成configure安裝檔案了

如果沒安裝m4則checking for GNU M4 that supports accurate traces... configure: error: no acceptable m4 could be found in $PATH.
GNU M4 1.4.5 or later is required; 1.4.11 is recommended


# cd /usr/local/src
# wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz
# tar -zvxf m4-1.4.9.tar.gz
# cd m4-1.4.9/
# ./configure --prefix=/usr/local/related/m4
 make && make install


或者yum安裝這兩個檔案
 yum install m4
 yum install autoconf



二,

安裝PDO擴充套件


cd /usr/local/src/php-7.1.7/ext
cd pdo_mysql

因為新開了一個xshell視窗,所以重新source /etc/profile,這是因為在其他視窗將autoconf新增到的環境變數,在這個視窗無法使用

然後/usr/local/php/bin/phpize 生成configure  檔案

./configure --prefix=/usr/local/related/pdo_mysql --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql   --這裡與安裝mysqli稍有不同,mysqli需要mysql_config的目錄,而PDO只指向mysql安裝目錄即可

make && make install

成功後:
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/

ls一下:

[
[email protected]
pdo_mysql]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/
mysqli.so  opcache.a  opcache.so  pdo_mysql.so


然後編輯php.ini
extension=pdo_mysql.so

重啟php-fpm

service php-fpm restart


三,

安裝mysqlnd 擴充套件

cp config9.m4 config.m4

./configure --prefix=/usr/local/related/mysqlnd

checking for pkg-config... /usr/bin/pkg-config
configure: error: Cannot find OpenSSL's <evp.h>

解決:
export PHP_OPENSSL_DIR=yes

./configure --prefix=/usr/local/related/mysqlnd --with-openssl-dir=

checking for CRYPTO_free in -lcrypto... no
configure: error: libcrypto not found!

其實第一步不需要解決(configure: error: Cannot find OpenSSL's <evp.h>)最終還是如下解決:

./configure --prefix=/usr/local/related/mysqlnd LDFLAGS=-L/usr/local/related/openssl/lib


所以還是需要看./configure --help

  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  LIBS        libraries to pass to the linker, e.g. -l<library>

應該是把LIBS 與 LDFLAGS弄混了

應該用LDFLAGS來指定未按標準安裝(也就是預設路徑安裝)的軟體的庫位置

最後:
make && make install

[
[email protected]
mysqlnd]# make install
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/
Installing header files:          /usr/local/php/include/php/

ls 看下:

[[email protected] mysqlnd]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/
mysqli.so  mysqlnd.so  opcache.a  opcache.so  pdo_mysql.so

同樣修改php.ini即可
extension=mysqlnd.so

重啟php-fpm

service php-fpm restart

因為mysqlnd並不是一個php的擴充套件,所以會報錯:

NOTICE: PHP message: PHP Warning:  PHP Startup: Invalid library (maybe not a PHP library) 'mysqlnd.so' in Unknown on line 0


最後猜測這個mysqlnd不用安裝也行,只要在php.ini裡指定好mysql.sock的位置即可:大約在1023行

pdo_mysql.default_socket=/usr/local/mysql/mysql.sock

當然還有mysqi的,大約在1173行
mysqli.default_socket =/usr/local/mysql/mysql.sock

這樣php即可與mysql進行通訊
 

相關推薦

CentOS單獨編譯安裝PHP gd庫擴充套件

先安裝 gd 前置庫 : freetype ,jpegsrc,libpng。 1. freetype 2 tar jxvf freetype-2.4.0.tar.bz2 3

單獨編譯安裝php的mysqli,pdo_mysql,mysqlnd擴充套件

首先安裝mysqli擴充套件 cd /usr/local/src/php-7.17/ext/ cd mysqli /usr/local/php/bin/phpize ./configure --prefix=/usr/local/related/mysqli --with-p

CentOS6.8單獨編譯安裝PHP gd庫擴展

發現 config 技術 ack 找到 接下來 修改 國內 usr # PHP-GD安裝 #在安裝之前可以先更新一下yum源,可以使用國內的阿裏雲源 yum -y install libjpeg-turbo-devel yum -y install freetype-dev

單獨編譯安裝gd庫

我的php是採用原始碼編譯的, 先安裝 gd 前置庫 : freetype ,jpegsrc,libpng。 1.freetype wget  http://downloads.sourceforge.net/freetype/freetype-2.7.1.tar.bz2

php7 contOS 編譯安裝全部自帶擴充套件

1. 安裝依賴庫 yum install screen gcc git vim wget openssl curl yum install gmp-devel libc-client-devel bzip2-devel enchant-devel libwebp-deve

centos7下用核心原始碼單獨編譯安裝KVM模組

準備:linux系統版本:CentOS-7-x86_64-DVD-1708   (其他系統也可以,核心版本對應就行)        核心版本3.10.0-693.el7.x86_64 1、官網獲取相應版本的核心原始碼,連結:http://vault.centos.org/。

編譯安裝的php 安裝pdo_mysql擴充套件

1.進入擴充套件目錄 如果還未下載: a. 下載 檔案  wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz b. 解壓檔案 tar zxvf PDO_MYSQL-1.0.2.tgz cd  PDO_MYSQL

擴充套件的幾個應用 釋出網路YUM源 vim編輯技巧 原始碼編譯安裝 systemctl控制 總結和答疑

Top NSD SERVICES DAY01 案例1:補充應用技巧 案例2:軟連線與硬連線 案例3:man手冊、zip備份 案例4:自定義yum軟體倉庫 案例5:釋出及測試yum倉庫 案例6:vim效率操作 案例7:編譯安裝軟體包 案例8:使用

擴充套件的幾個應用 釋出網路YUM源 vim編輯技巧 原始碼編譯安裝 systemctl控制 總結和答疑

Top NSD SERVICES DAY01 案例1:補充應用技巧 案例2:軟連線與硬連線 案例3:man手冊、zip備份 案例4:自定義yum軟體倉庫 案例5:釋出及測試yum倉庫 案例6:vim效率操作 案例7:編譯安裝軟體包 案例8:使用

編譯安裝PHP7及擴充套件

一、編譯安裝PHP 1. 下載原始碼包並解壓 原始碼包地址:http://php.net/downloads.php 下載原始碼包 當前PHP最新本門是7.2.9,下載 php-7.2.9 原始碼包 wget http://be2.php.net/get/php-7.2.9.tar.gz/from

基於docker映象php5.6安裝 mcrypt pdo_mysql gd redis擴充套件

FROM php:5.6.37-fpm-alpine3.7 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \ && apk update \ &am

linux下編譯安裝最新版phalcon centos下PHP7新增phalcon擴充套件

linux下編譯安裝phalcon 1、下載原始碼包    執行命令:  git clone --depth=1 git://github.com/phalcon/cphalcon.git 進入目錄  執行命令:  

docker環境下 php手動編譯安裝擴充套件 bcmath

網上找了好多apt-get的命令  都無效  只能手動編譯安裝嘍 首先 進入docker 專案  docker exec -it 專案名稱 bash 在根目錄下  git下php所有版本  然後切換到指定版本(我的7.2.7版本) http://php.

centos原始碼編譯安裝ImageMagick 和php-imagick擴充套件

1.下載安裝ImageMagick wget ftp://mirror.aarnet.edu.au/pub/imagemagick/ImageMagick-6.6.8-10.tar.gz tar -xzvf ImageMagick-6.6.8-10.tar.gz ./config

swoole1-編譯安裝swoole擴充套件

第一步搭建php環境 比較推薦oneinstack互動安裝,具體請參考右邊連結. https://oneinstack.com/install/ 第二步安裝swoole擴充套件 (1)linux下載swoole wget http://pecl.php.net/get/s

Centos 下編譯安裝fileinfo擴充套件

1.檢視當前環境是否安裝fileinfo擴充套件 php -i | grep fileinfo 若出現 fileinfo fileinfo support => enabled 則代表fileinfo擴充套件可用,否則不可用。 2.檢視當前php版本 ph

Windows 10 安裝PostgreSQL 資料庫 plpgsql_check擴充套件(原始碼編譯)

前言 之前的部落格記錄了Linux CentOS 7 PostgreSQL 10 安裝plpgsql_check擴充套件(原始碼編譯),本文記錄 win10 64位 下安裝 PostgreSQL 擴充套件外掛plpgsql_check,支援PG9.2以上版本,目前測試通過9

mac 編譯安裝php-ampq擴充套件的步驟與遇到的坑

  安裝rabbitmq-c-0.8.0 rabbitmq-c是一個用於C語言的,與AMQP server進行互動的client庫。 AMQP擴充套件能夠支援rabbitMQ,AMQP是rabbitMQ的協議(Advanced Message Queue

編譯安裝php-amq擴充套件

用途:這個擴充套件是用來操作rabbitmq服務端的 一、安裝總括 1、編譯安裝librabbitmq庫 這是一個開源c語言的庫。用來與rabbitmq進行通訊 而php的php-amqp擴充套件就是使用這個庫與服務端通訊。所以必須先安裝這個開源庫。 下載地址:https

phpize編譯安裝php擴充套件的時候出現Cannot find autoconf. Please check your autoconf installation and the 的解決方法

今天在mac環境下安裝PHP擴充套件框架Yaf,在編譯安裝框架的時候出現如下錯誤:Configuring for: PHP Api Version: 20151012 Zend Module Api No: 20151012 Zend Extensi