經過 PECL 安裝 PHP 擴展(以 CentOS7 中安裝 swoole 爲例)

經常使用工具

PECL 和 phpize

官網文檔php

PHP 有大量的擴展能夠使用,好比用於鏈接數據庫的擴展 mysqli,圖形庫 gd2 等。擴展有兩種安裝方法:mysql

  • 經過 pear install xxx 安裝,須要提早在機器上安裝 pear,CentOS 下能夠經過 yum install php72w-pear 能夠安裝 PHP7.2 對應的版本
  • 用 phpize 源碼編譯安裝,CentOS 下能夠經過 yum install php72w-devel 能夠安裝 PHP7.2 對應的版本

注意安裝的擴展須要和 PHP 的版本匹配。例如我安裝的是 PHP7.2,則須要安裝 PHP7.2 對應的 php-devel 和 php-pear:web

[root@VM_139_74_centos ~]# yum list php72w*
Loaded plugins: fastestmirror, langpacks
Repository epel is listed more than once in the configuration
Loading mirror speeds from cached hostfile
 * webtatic: us-east.repo.webtatic.com
Installed Packages
php72w-cli.x86_64                                         7.2.8-1.w7                             @webtatic
php72w-common.x86_64                                      7.2.8-1.w7                             @webtatic
php72w-devel.x86_64                                       7.2.8-1.w7                             @webtatic
php72w-fpm.x86_64                                         7.2.8-1.w7                             @webtatic
php72w-pear.noarch                                        1:1.10.4-1.w7                          @webtatic
php72w-process.x86_64                                     7.2.8-1.w7                             @webtatic
php72w-xml.x86_64                                         7.2.8-1.w7                             @webtatic
Available Packages
php72w-bcmath.x86_64                                      7.2.8-1.w7                             webtatic 
php72w-dba.x86_64                                         7.2.8-1.w7                             webtatic 
php72w-embedded.x86_64                                    7.2.8-1.w7                             webtatic 
php72w-enchant.x86_64                                     7.2.8-1.w7                             webtatic 
php72w-gd.x86_64                                          7.2.8-1.w7                             webtatic 
php72w-imap.x86_64                                        7.2.8-1.w7                             webtatic 
php72w-interbase.x86_64                                   7.2.8-1.w7                             webtatic 
php72w-intl.x86_64                                        7.2.8-1.w7                             webtatic 
php72w-ldap.x86_64                                        7.2.8-1.w7                             webtatic 
php72w-mbstring.x86_64                                    7.2.8-1.w7                             webtatic 
php72w-mysql.x86_64                                       7.2.8-1.w7                             webtatic 
php72w-mysqlnd.x86_64                                     7.2.8-1.w7                             webtatic 
php72w-odbc.x86_64                                        7.2.8-1.w7                             webtatic 
php72w-opcache.x86_64                                     7.2.8-1.w7                             webtatic 
php72w-pdo.x86_64                                         7.2.8-1.w7                             webtatic 
php72w-pdo_dblib.x86_64                                   7.2.8-1.w7                             webtatic 
php72w-pecl-apcu.x86_64                                   5.1.9-1.w7                             webtatic 
php72w-pecl-apcu-devel.x86_64                             5.1.9-1.w7                             webtatic 
php72w-pecl-geoip.x86_64                                  1.1.1-1.2.w7                           webtatic 
php72w-pecl-igbinary.x86_64                               2.0.5-1.w7                             webtatic 
php72w-pecl-igbinary-devel.x86_64                         2.0.5-1.w7                             webtatic 
php72w-pecl-imagick.x86_64                                3.4.3-1.2.w7                           webtatic 
php72w-pecl-imagick-devel.x86_64                          3.4.3-1.2.w7                           webtatic 
php72w-pecl-libsodium.x86_64                              1.0.6-1.2.w7                           webtatic 
php72w-pecl-memcached.x86_64                              3.0.4-1.w7                             webtatic 
php72w-pecl-mongodb.x86_64                                1.4.1-1.w7                             webtatic 
php72w-pecl-redis.x86_64                                  3.1.6-1.w7                             webtatic 
php72w-pecl-xdebug.x86_64                                 2.6.0-1.w7                             webtatic 
php72w-pgsql.x86_64                                       7.2.8-1.w7                             webtatic 
php72w-phpdbg.x86_64                                      7.2.8-1.w7                             webtatic 
php72w-pspell.x86_64                                      7.2.8-1.w7                             webtatic 
php72w-recode.x86_64                                      7.2.8-1.w7                             webtatic 
php72w-snmp.x86_64                                        7.2.8-1.w7                             webtatic 
php72w-soap.x86_64                                        7.2.8-1.w7                             webtatic 
php72w-sodium.x86_64                                      7.2.8-1.w7                             webtatic 
php72w-tidy.x86_64                                        7.2.8-1.w7                             webtatic 
php72w-xmlrpc.x86_64                                      7.2.8-1.w7                             webtatic

pecl

官網文檔redis

pecl install extname 命令自動下載源碼、編譯代碼,並將編譯後的 extname.so 安裝到 extension_dir 中。而後編輯 php.ini 引入 extname.so 就能夠加載了。sql

phpize

使用 pecl 須要提早將擴展庫發佈到 PECL 官方倉庫中。而源碼安裝更靈活。mongodb

phpize 的通用流程:數據庫

$ cd extname
$ phpize
$ ./configure
$ make
# make install

php 命令

經過 php -m 能夠查看 PHP 中安裝的擴展。json

php-config

官網文檔
php-config 能夠用於獲取 PHP 的配置信息。能夠經過 -h 選項來顯示 php-config 腳本在命令行所能使用的選項。centos

這裏須要用 php-config --extension-dir 來查看 PHP 的擴展目錄位置:ruby

[root@VM_139_74_centos ~]# php-config --extension-dir
/usr/lib64/php/modules
[root@VM_139_74_centos ~]# ll /usr/lib64/php/modules/
total 6500
-rwxr-xr-x 1 root root   24752 Jul 20 23:31 bz2.so
-rwxr-xr-x 1 root root   33872 Jul 20 23:31 calendar.so
-rwxr-xr-x 1 root root   15648 Jul 20 23:31 ctype.so
-rwxr-xr-x 1 root root   87072 Jul 20 23:31 curl.so
-rwxr-xr-x 1 root root  176720 Jul 20 23:31 dom.so
-rwxr-xr-x 1 root root   86136 Jul 20 23:31 exif.so
-rwxr-xr-x 1 root root 5053064 Jul 20 23:31 fileinfo.so
-rwxr-xr-x 1 root root   62056 Jul 20 23:31 ftp.so
-rwxr-xr-x 1 root root   15744 Jul 20 23:31 gettext.so
-rwxr-xr-x 1 root root   70400 Jul 20 23:31 gmp.so
-rwxr-xr-x 1 root root   41104 Jul 20 23:31 iconv.so
-rwxr-xr-x 1 root root   44888 Jul 20 23:31 json.so
-rwxr-xr-x 1 root root  278160 Jul 20 23:31 phar.so
-rwxr-xr-x 1 root root   37120 Jul 20 23:31 posix.so
-rwxr-xr-x 1 root root   15728 Jul 20 23:31 shmop.so
-rwxr-xr-x 1 root root   58456 Jul 20 23:31 simplexml.so
-rwxr-xr-x 1 root root   91688 Jul 20 23:31 sockets.so
-rwxr-xr-x 1 root root   15880 Jul 20 23:31 sysvmsg.so
-rwxr-xr-x 1 root root   11568 Jul 20 23:31 sysvsem.so
-rwxr-xr-x 1 root root   15800 Jul 20 23:31 sysvshm.so
-rwxr-xr-x 1 root root   19936 Jul 20 23:31 tokenizer.so
-rwxr-xr-x 1 root root   32744 Jul 20 23:31 wddx.so
-rwxr-xr-x 1 root root   32960 Jul 20 23:31 xmlreader.so
-rwxr-xr-x 1 root root   54216 Jul 20 23:31 xml.so
-rwxr-xr-x 1 root root   49232 Jul 20 23:31 xmlwriter.so
-rwxr-xr-x 1 root root   32984 Jul 20 23:31 xsl.so
-rwxr-xr-x 1 root root  138776 Jul 20 23:31 zip.so

安裝 PHP 環境

安裝epel-release

epel 是 Extra Packages for Enterprise Linux (EPEL),倉庫資源豐富且更新及時。參考 這裏

yum -y install epel-release

獲取 PHP7 的yum源

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

查看可用的 PHP7 版本列表

yum list php7*

安裝 PHP7.2

用於執行 PHP 腳本。

yum install php72w

安裝 PHP-FPM

用於在 PHP 和 Nginx 之間通訊。

yum install php72w-fpm

安裝 PEAR

安裝後,能夠使用 pecl 命令來安裝軟件。能夠經過 PHP 官方提供的 pecl 命令從 PHP 的官方擴展庫安裝擴展。

yum install php72w-pear

安裝 phpize

安裝後,能夠使用 phpize 命令從源碼編譯 PHP 擴展,獲得 *.so 文件。

yum install php72w-devel

安裝 swoole

pecl install swoole

修改 php.ini 配置文件

添加這句話:

extension=swoole.so

常見問題

建議 Linux 系統安裝完成後,馬上安裝各類編譯工具,能夠減小不少麻煩。

configure: error: no acceptable C compiler found in $PATH

緣由:系統中沒有安裝 C 編譯器。
解決辦法:安裝 GCC 軟件套件。

yum install gcc

configure: error: C++ preprocessor 「/lib/cpp」 fails sanity check

緣由:系統中沒有安裝 C++ 預處理器。
解決辦法:安裝 C++ 軟件套件。

yum install glibc-headers gcc-c++
相關文章
相關標籤/搜索