Centos 7環境下安裝PHP動態擴展模塊so(以openssl.so爲例)

在centos 7環境下搭建好Lnmp環境之後,發現安裝的php有好多擴展都沒有安裝,自己安裝了一下遇到好多問題,在網上查找資料也沒有一個全面的解決問題的辦法,總是遇到各種錯誤。最終通過各種問題處理和各種探索,安裝成功so擴展。現就以openssl.so擴展安裝爲例,來闡述一下php擴展的安裝,步驟如下:

首先在安裝擴展之前說明一點:在Linux環境下的php的擴展後綴爲“.so”,在Windows環境下的php的擴展名爲“.dll”。

接下來就講一下安裝擴展步驟:

1、首先確定Linux下已安裝的PHP版本,因爲不同PHP版本對於追加動態模塊有兼容性問題(可能路徑,配置?其他?),往往報錯不能安裝,追加的模塊必須版本一致。

 

查看PHP版本有多種方法:

①運行php -v(但在我的64位Linux測試過沒作用,原因你知道的了!)

②在已安裝好的PHP路徑下找到php-config並進行查看,可以vi或cat (關鍵字:version="XXXXXXX"爲PHP版本號)

vim php-config

或者

cat php-config

在centos 7環境下可以使用:php --version 命令來查看php的版本

2、到http://php.net/downloads.php  (相應PHP版本下載)地址下下載php相應的安裝包,或者可以通過Linux命令下載(參考我的上一篇文章:在CentOS 7系統上搭建LNMP 環境 中php的安裝);如果之前安裝過,安裝包存在的話,則不必下載;

3、如果是本地下載則將通過ftp工具將php源碼包上傳到你的Linux環境下,上傳成功後通過命令進行解壓:

解壓命令如下:

tar -jxvf  php-5.6.7.tar.bz2  (源代碼tar包)

4、接下來就到了openssl.so模塊安裝的時候了,進入剛剛解壓過的php源碼包文件夾後,執行configure進行模塊追加,一下是命令部分(我的php源碼文件包在/root/source下面,解壓過後的源碼包爲php-5.6.7):

[root@localhost source]# cd ./php-5.6.7/ext/openssl    #進入源碼包的OPENSSL模塊文件夾

[root@localhost openssl]# /usr/local/bin/phpize             #在這裏執行/usr/local/bin/phpize

#注意這是已經安裝好的php路徑(提示:如果找不到/usr/local/bin/phpize,則使用命令whereis phpize來進行查找它的位置,我的phpize路徑是/usr/local/bin/phpize)

/usr/local/bin/phpize 命令執行過後可能會報一個錯誤:Cannot find config.m4.Make sure that you run '/usr/local/bin/phpize' in the top

level source directory of the module.

 

解決辦法:

查看PHP源碼包openssl文件夾下是否有config0.m4,如果有,執行命令:

[root@localhost openssl]# mv config0.m4 config.m4

執行完成之後,再次執行/usr/local/bin/phpize命令:

會報一個:Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script. 的錯誤;

解決辦法:

[root@localhost ~]# yum install m4

[root@localhost ~]# yum install autoconf

接下來再次執行:/usr/local/bin/phpize  出現結果表示執行成功:

 

5、接下來就到了編譯的階段了,編譯過程使用如下命令進行:

[root@localhost openssl]# ./configure --with-openssl --with-php-config=/usr/local/bin/php-config

注意:這裏的/usr/local/bin/php-config是你的php安裝路徑,不知道的話,可以通過phpinfo來查看:

不出意外的話,這條命令執行完成之後會報一個configure: error: Cannot find OpenSSL's <evp.h> 的錯誤,在執行完成的結尾:解決辦法:

 

 

[root@localhost ~]# yum install openssl openssl-devel

[root@localhost ~]# ln -s /usr/lib64/libssl.so /usr/lib/

再次執行:

[root@localhost openssl]# ./configure --with-openssl --with-php-config=/usr/local/bin/php-config

成功結果如下,會在結尾生成一個config.h文件:

接下來繼續執行命令:

[root@localhost openssl]# make#執行編譯

[root@localhost openssl]# make test                 #測試編譯的結果

執行完make test 命令後會出現輸入光標停頓,這是問你是否想要發送一個報告,我在這裏直接選n(n就是no的意思)

  再接着執行:

[root@localhost openssl]# make install #進行安裝

出現路徑結果表示安裝成功

 

記住這裏的這個路徑,這個路徑就是“.so”文件的存放路徑,後面要使用。

小提示:

一般規範點的話,會把追加的SO模塊放在一個指定的文件夾裏,就在PHP安裝好的目錄下的extensions文件夾內

#mv /*****/*****/openssl.so /var/www/php/lib/php/extensions

至此,so動態模塊追加編譯已全部完成了。

6、接下來就是進行配置了,讓php支持加載這些追加的動態模塊,vim編輯下php的配置文件php.ini

使用vim打開php配置文件php.ini

進入編輯器後可以看到php的所有相關配置,查找extension_dir這個配置選項;

 

vi後可直接‘/extension_dir '查找,找到後可能是這樣的:

extension_dir="./"

將其修改成:

extension_dir="/usr/local/lib/php/extensions/no-debug-non-zts-20131226/"

注意:這裏的/usr/local/lib/php/extensions/no-debug-non-zts-20131226/就是剛纔執行make install成功時返回的路徑,

也就是so文件的所在。

添加:

extension=openssl.so #(so模塊文件名)

最後執行:

":wq!"

命令保存退出

接下來重啓nginx和php服務

[root@localhost ~]# nginx -s reload

[root@localhost ~]# servive php-fpm restart

 

到這裏安裝openssl擴展模塊就已經完成了!如果在安裝過程中遇到什麼問題,可以及時和我交流!

 

到此Centos 7(Linux)環境下安裝PHP(編譯添加)相應動態擴展模塊so就完成了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章