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就完成了。
(不知道爲啥,圖片上傳了兩次都不能顯示,就第三次上傳,若是仍是不能顯示那也沒辦法,就只能這樣了!)