通过 PECL 安装 PHP 扩展(以 CentOS7 中安装 swoole 为例)
<p>原文地址:https://blog.csdn.net/kikajack/article/details/82495190</p><p>常用工具<br>PECL 和 phpize<br>官网文档</p>
<p>PHP 有大量的扩展可以使用,比如用于连接数据库的扩展 mysqli,图形库 gd2 等。扩展有两种安装方法:</p>
<p>通过 pear install xxx 安装,需要提前在机器上安装 pear,CentOS 下可以通过 yum install php72w-pear 可以安装 PHP7.2 对应的版本<br>用 phpize 源码编译安装,CentOS 下可以通过 yum install php72w-devel 可以安装 PHP7.2 对应的版本<br>注意安装的扩展需要和 PHP 的版本匹配。例如我安装的是 PHP7.2,则需要安装 PHP7.2 对应的 php-devel 和 php-pear:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> yum list php72w*</span>
Loaded plugins: fastestmirror,<span style="color: rgba(0, 0, 0, 1)"> langpacks
Repository epel is listed more than once in the configuration
Loading mirror speeds from cached hostfile
</span>* webtatic: us-east.repo.webtatic.<span style="color: rgba(0, 0, 0, 1)">com
Installed Packages
php72w</span>-cli.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 @webtatic
php72w</span>-common.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 @webtatic
php72w</span>-devel.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 @webtatic
php72w</span>-fpm.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 @webtatic
php72w</span>-pear.noarch 1:1.10.4-1.<span style="color: rgba(0, 0, 0, 1)">w7 @webtatic
php72w</span>-process.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 @webtatic
php72w</span>-xml.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 @webtatic
Available Packages
php72w</span>-bcmath.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-dba.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-embedded.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-enchant.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-gd.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-imap.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-interbase.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-intl.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-ldap.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-mbstring.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-<span style="color: rgba(0, 128, 128, 1)">mysql</span>.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-mysqlnd.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-odbc.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-opcache.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-pdo.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-pdo_dblib.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-pecl-apcu.x86_64 5.1.9-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-pecl-apcu-devel.x86_64 5.1.9-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-pecl-geoip.x86_64 1.1.1-1.2.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-pecl-igbinary.x86_64 2.0.5-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-pecl-igbinary-devel.x86_64 2.0.5-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-pecl-imagick.x86_64 3.4.3-1.2.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-pecl-imagick-devel.x86_64 3.4.3-1.2.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-pecl-libsodium.x86_64 1.0.6-1.2.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-pecl-memcached.x86_64 3.0.4-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-pecl-mongodb.x86_64 1.4.1-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-pecl-redis.x86_64 3.1.6-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-pecl-xdebug.x86_64 2.6.0-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-pgsql.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-phpdbg.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-pspell.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-recode.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-snmp.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-soap.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-sodium.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-tidy.x86_64 7.2.8-1.<span style="color: rgba(0, 0, 0, 1)">w7 webtatic
php72w</span>-xmlrpc.x86_64 7.2.8-1.w7 webtatic</pre>
</div>
<p>pecl<br>官网文档</p>
<p>pecl install extname 命令自动下载源码、编译代码,并将编译后的 extname.so 安装到 extension_dir 中。然后编辑 php.ini 引入 extname.so 就可以加载了。</p>
<p>phpize<br>使用 pecl 需要提前将扩展库发布到 PECL 官方仓库中。而源码安装更灵活。</p>
<p>phpize 的通用流程:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">$ cd extname
$ phpize
$ </span>./<span style="color: rgba(0, 0, 0, 1)">configure
$ make
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> make install</span></pre>
</div>
<h2 id="php-命令">php 命令</h2>
<p>通过 <code class="eye-protector-processed">php -m</code> 可以查看 PHP 中安装的扩展。</p>
<h2 id="php-config">php-config</h2>
<p>官网文档 <br>php-config 可以用于获取 PHP 的配置信息。可以通过 <code class="eye-protector-processed">-h</code> 选项来显示 php-config 脚本在命令行所能使用的选项。</p>
<p>这里需要用 <code class="eye-protector-processed">php-config --extension-dir</code> 来查看 PHP 的扩展目录位置:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> php-config --extension-dir</span>
/usr/lib64/php/<span style="color: rgba(0, 0, 0, 1)">modules
<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> ll /usr/lib64/php/modules/</span>
total 6500
-rwxr-xr-x 1 root root 24752 Jul 20 23:31 bz2.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 33872 Jul 20 23:31 calendar.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 15648 Jul 20 23:31 ctype.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 87072 Jul 20 23:31 curl.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root176720 Jul 20 23:31 dom.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 86136 Jul 20 23:31 exif.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 5053064 Jul 20 23:31 fileinfo.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 62056 Jul 20 23:31 ftp.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 15744 Jul 20 23:31 gettext.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 70400 Jul 20 23:31 gmp.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 41104 Jul 20 23:31 <span style="color: rgba(0, 128, 128, 1)">iconv</span>.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 44888 Jul 20 23:31 json.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root278160 Jul 20 23:31 phar.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 37120 Jul 20 23:31 posix.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 15728 Jul 20 23:31 shmop.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 58456 Jul 20 23:31 simplexml.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 91688 Jul 20 23:31 sockets.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 15880 Jul 20 23:31 sysvmsg.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 11568 Jul 20 23:31 sysvsem.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 15800 Jul 20 23:31 sysvshm.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 19936 Jul 20 23:31 tokenizer.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 32744 Jul 20 23:31 wddx.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 32960 Jul 20 23:31 xmlreader.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 54216 Jul 20 23:31 xml.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 49232 Jul 20 23:31 xmlwriter.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root 32984 Jul 20 23:31 xsl.<span style="color: rgba(0, 0, 0, 1)">so
</span>-rwxr-xr-x 1 root root138776 Jul 20 23:31 zip.so</pre>
</div>
<h1 id="安装-php-环境">安装 PHP 环境</h1>
<h2 id="安装epel-release">安装epel-release</h2>
<p>epel 是 Extra Packages for Enterprise Linux (EPEL),仓库资源丰富且更新及时。参考 这里。</p>
<div class="cnblogs_Highlighter">
<pre class="brush:php;gutter:true;">yum -y install epel-release
</pre>
</div>
<h2 id="获取-php7-的yum源">获取 PHP7 的yum源</h2>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> rpm -Uvh https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">mirror.webtatic.com/yum/el7/webtatic-release.rpm</span></pre>
</div>
<h2 id="查看可用的-php7-版本列表">查看可用的 PHP7 版本列表</h2>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> yum <span style="color: rgba(0, 0, 255, 1)">list</span> php7*</pre>
</div>
<h2 id="安装-php72">安装 PHP7.2</h2>
<p>用于执行 PHP 脚本。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> yum install php72w</pre>
</div>
<h2 id="安装-php-fpm">安装 PHP-FPM</h2>
<p>用于在 PHP 和 Nginx 之间通信。</p>
<div class="cnblogs_code">
<pre>yum install php72w-fpm</pre>
</div>
<h2 id="安装-pear">安装 PEAR</h2>
<p>安装后,可以使用 pecl 命令来安装软件。可以通过 PHP 官方提供的 pecl 命令从 PHP 的官方扩展库安装扩展。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> yum install php72w-pear</pre>
</div>
<h2 id="安装-phpize">安装 phpize</h2>
<p>安装后,可以使用 phpize 命令从源码编译 PHP 扩展,得到 <code class="eye-protector-processed">*.so</code> 文件。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> yum install php72w-devel</pre>
</div>
<h1 id="安装-swoole">安装 swoole</h1>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> pecl install swoole</pre>
</div>
<h1 id="修改-phpini-配置文件">修改 php.ini 配置文件</h1>
<p>添加这句话:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> extension=swoole.so</pre>
</div>
<h1 id="常见问题">常见问题</h1>
<p>建议 Linux 系统安装完成后,立刻安装各种编译工具,可以减少很多麻烦。</p>
<h2 id="configure-error-no-acceptable-c-compiler-found-in-path">configure: error: no acceptable C compiler found in $PATH</h2>
<p>原因:系统中没有安装 C 编译器。 <br>解决办法:安装 GCC 软件套件。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> yum install gcc</pre>
</div>
<h2 id="configure-error-c-preprocessor-libcpp-fails-sanity-check">configure: error: C++ preprocessor “/lib/cpp” fails sanity check</h2>
<p>原因:系统中没有安装 C++ 预处理器。 <br>解决办法:安装 C++ 软件套件。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> yum install glibc-headers gcc-c++</pre>
</div>
<p> </p>
</div>
<div id="MySignature" role="contentinfo">
纵然世间炎凉百态!我自依旧初心不改!!<br><br>
来源:https://www.cnblogs.com/phpk/p/10930471.html
頁:
[1]