環境是 centos7 + nginx 1.14 + php 7.2.18,由於新增郵件發送功能,使用的是 socket 通訊的方式,需要開啟 php 的 sockes 和 openssl 擴展
安裝 sockets 組件
進入源碼目錄中待操作的組件子目錄,並執行 phpize 工具
不刪解壓后的源碼是個好事!使用 cd
命令進入源碼目錄/ext/sockets
目錄,在該目錄下運行命令
$ /usr/local/php/bin/phpize
注:/usr/local/php/bin
是php的安裝目錄,在該目錄下應該有 phpize 可執行文件存在
錯誤應對
如果出現 "Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment vari"
,則執行以下命令補齊缺失的功能
$ yum install m4
$ yum install autoconf
如果出現 "Cannot find config.m4."
,則將該目錄下的 config0.m4 復制並改名到同目錄內
$ cp config0.m4 config.m4
再重新運行 phpize
使用 ./configure 進行具體配置
使用命令對要安裝的插件進行具體配置,以 sockets 安裝為例,運行以下命令
$ ./configure --prefix=/usr/local/php --with-php-config=/usr/local/php/bin/php-config --enable-sockets
注:/usr/local/php
是 PHP 安裝后的默認目錄,/usr/local/php/bin/php-config
也是默認
運行 make && make install
如無錯誤,繼續運行
$ make && make install
如無錯誤,以下是部分輸出結果
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/
Installing header files: /usr/local/php/include/php/
說明 sockets 擴展源碼經過編譯編程擴展后,安裝在了第一行的目錄內
修改 PHP.ini 配置,啟用擴展
修改 php.ini,默認可以不更改 extension_dir='./'
的值,而只是去掉 extension=sockets
前面的分號注釋,使其生效。保存后,重新啟動 php-fpm
(假設php-fpm在安裝后的默認路徑下)
$ /etc/init.d/php-fpm reload
查看結果
運行 phpinfo()
函數,在輸出頁面查看是否有 sockets 的獨立顯示,並且 Sockets Support
的值為 enabled
。
安裝 Openssl 組件
與安裝 sockets
步驟相同,區別是在使用 ./configure
時的語句,不完全一樣,使用
$ ./configure --with-openssl --with-php-config=/usr/local/php/bin/php-config
其它步驟相同