Centos 7(Linux)環境下安裝PHP(編譯添加)相應動態擴展模塊so(以openssl.so爲例)

https://blog.csdn.net/shinesun001/article/details/54312402php

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

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

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

一、首先肯定Linux下已安裝的PHP版本,由於不一樣PHP版本對於追加動態模塊有兼容性問題(可能路徑,配置?其餘?),每每報錯不能安裝,追加的模塊必須版本一致。編輯器

 

查看PHP版本有多種方法:php-fpm

①運行php -v(但在個人64位Linux測試過沒做用,緣由你知道的了!)工具

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

vim php-configthis

或者.net

cat php-config

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

二、到http://php.net/downloads.php  (相應PHP版本下載)地址下下載php相應的安裝包,或者能夠經過Linux命令下載(參考個人上一篇文章:在CentOS 7系統上搭建LNMP 環境 中php的安裝);若是以前安裝過,安裝包存在的話,則沒必要下載;

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

解壓命令以下:

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

四、接下來就到了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  出現以下結果表示執行成功:

   

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

[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動態模塊追加編譯已所有完成了。

六、接下來就是進行配置了,讓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就完成了。

 

(不知道爲啥,圖片上傳了兩次都不能顯示,就第三次上傳,若是仍是不能顯示那也沒辦法,就只能這樣了!)

相關文章
相關標籤/搜索