在CentOS操作系统中安装PHP扩展是一个常见的任务,尤其是在需要为PHP环境添加额外功能时,以下是关于如何在CentOS上安装PHP扩展的详细说明,包括包管理式安装、PECL安装以及源码编译安装三种方法。
一、包管理式安装(yum)
包管理式安装是最为便捷的方式之一,适用于快速部署和配置,这种方法会自动处理依赖关系并配置好php.ini
文件。
1、检查当前PHP版本:
php v
2、卸载旧版本的PHP(如果已安装):
yum remove y php
3、安装必要的yum工具:
yum install y yumutils
4、更换yum源以支持PHP 8:
sudo yum install y https://dl.fedoraproject.org/pub/epel/epelreleaselatest7.noarch.rpm sudo yum install https://rpms.remirepo.net/enterprise/remirelease7.rpm
5、启用PHP 8流模块:
sudo yumconfigmanager disable 'remiphp*' sudo yumconfigmanager enable remiphp80
6、安装PHP 8及其扩展:
sudo yum install y php phpcli phpfpm sudo yum install y php{extension_name} # phpmbstring, phpjson, phpmysqlnd
7、重启Apache或Nginx服务器:
systemctl restart httpd # For Apache systemctl restart nginx # For Nginx
8、验证安装:
新建一个index.php
如下:
<?php phpinfo();
然后通过浏览器访问该文件,查看是否包含所安装的扩展信息。
二、PECL安装
PECL(PHP Extension Community Library)是PHP官方提供的用于管理和安装扩展的工具,它支持从在线仓库下载并安装扩展。
1、安装PECL:
yum install y php73pear # 根据PHP版本调整命令中的73
2、使用PECL安装扩展:
pecl install {extension_name} # pecl install mongodb
3、配置php.ini:
找到php.ini文件的位置,通常可以通过以下命令查找:
php ini
然后在php.ini文件中添加以下行:
extension={extension_name}.so # extension=mongodb.so
4、重启Apache或Nginx服务器:
systemctl restart httpd # For Apache systemctl restart nginx # For Nginx
5、验证安装:
同样,新建一个index.php
如下:
<?php phpinfo();
通过浏览器访问该文件,查看是否包含所安装的扩展信息。
三、源码编译安装
源码编译安装提供了最大的灵活性,允许用户自定义编译选项以满足特定需求,这种方法通常用于生产环境中,以便进行性能调优。
1、下载PHP源代码:
访问[PHP官方下载地址](https://www.php.net/downloads),选择适合的版本进行下载。
wget https://www.php.net/distributions/php8.0.13RC1.tar.gz
2、解压源码:
tar zxvf php8.0.13RC1.tar.gz cd php8.0.13RC1
3、安装依赖库和编译工具:
yum y install autoconf freetype gd libpng libpngdevel libjpeg libxml2 libxml2devel zlib curl curldevel netsnmpdevel libjpegdevel phpldap openldapdevel openssl openssldevel
4、配置编译选项:
./configure withphpconfig=/usr/bin/phpconfig enablembstring withcurl withopenssl withzlib enableinlineoptimization withbz2=/usr enablembregex enableintl withmcrypt=/usr withgd enablebcmath withmysqli=/usr/bin/mysql_config withpdomysql=/usr/bin/mysql_config withiodbc=/usr/bin/odbc_config withtidied=shared,/usr/include/tidied enablesoap enablezip withapxs2=/usr/local/apache2/bin/apxs withfpmuser=nginx withfpmgroup=nginx enableftp withgd withjpeg withpng enableexif withfreetypedir=/usr/share/fonts withxpmdir=/usr/lib/php/7.0/xpm enableopcache=no enablesockets withgettext enablecalendar enableexif enableftp enablefileinfo enablegdnativettf enableintl enablembstring enablepcntl enablephar enableposix withreadline=/usr withrecode=/usr/bin/recode withsodium=shared enableshmop enablesysvsem enablesysvshm enablewddx withxmlrpc withxsl enablezendmultibyte enablezendguard withzlib=/usr withzlibdir=/usr disableipv6 enablezip
5、编译并安装:
make && make install
6、配置php.ini:
根据编译时的选项,可能需要手动编辑php.ini文件以启用某些扩展,如果编译了MongoDB扩展,则需要在php.ini中添加:
extension=mongodb.so
7、重启Apache或Nginx服务器:
systemctl restart httpd # For Apache systemctl restart nginx # For Nginx
8、验证安装:
同样,新建一个index.php
如下:
<?php phpinfo();
通过浏览器访问该文件,查看是否包含所安装的扩展信息。
四、注意事项与常见问题解答(FAQs)
Q1: PHP CLI安装了某个扩展后,为什么网页中无法使用?
A1: PHP CLI和Web服务器(如Apache或Nginx)可能使用不同的php.ini文件,确保在Web服务器使用的php.ini文件中也启用了相应的扩展,可以使用php ini
命令来查找CLI使用的php.ini文件位置,并在其中添加或修改扩展配置。
Q2: 安装扩展时遇到“Cannot find OpenSSL’s <evp.h>”错误怎么办?
A2: 这个错误通常是因为缺少OpenSSL的开发包,可以通过以下命令安装所需的开发包:
yum y install openssl openssldevel
然后重新尝试安装扩展。