php8.0源码编译安装mysqli拓展

将开发环境web项目上传到CentOS8.0云服务器上后,调用PHP文件报500错误,经排查php环境中不存在mysqli拓展,导致无法使用mysqli_connect()函数;查看phpinfo()页面证实猜想;原因可能是yum安装PHP时默认无mysqli.so文件;

1 查看本地安装的php版本

php -v 

image

2 php官网下载同本机php相同版本的压缩包

mkdir temp
cd temp
# 未找到8.0.20版本的
wget https://www.php.net/distributions/php-8.0.23.tar.gz

tar -zxvf php-8.0.23.tar.gz
cd php-8.0.23

3 安装 mysqli 依赖拓展mysqlnd (phpinfo()显示有此拓展时可跳过)

3.1 查询本地phpize命令文件路径
find / -name phpize

~~ /usr/bin/phpize
3.2 在ext文件夹中找到mysqlnd文件夹,并执行编译
cd ext/mysqlnd
/usr/bin/phpize
# 若上面命令报错误无config.m4文件,可执行:
# cp config9.m4 config.m4
./configure
make & make install

image

编译完成后如下(路径取决于第一步创建的temp文件夹路径):
image

3.3 将mysqlnd.so文件拷贝到php默认加载的module文件夹下
# yum安装的Apache2.4默认为 /usr/lib64/php/modules
cp /usr/lib64/php/modules/temp/php-8.0.23/ext/mysqlnd/modules/mysqlnd /usr/lib64/php/modules

4 安装mysqli拓展

cd ext/mysqli
/usr/bin/phpize
./configure
make & make install
cp /usr/lib64/php/modules/temp/php-8.0.23/ext/mysqlnd/modules/mysqli /usr/lib64/php/modules

5 配置php.ini

# yun直接安装的PHP配置文件php.ini存放在/etc/php.ini
vim /etc/php.ini

如图开启mysqli和mysqlnd拓展(mysqlnd必须需在mysqli前引入):
image
image

6 重启Apache

systemctl restart httpd

若phpinfo()中仍无法看到mysqli拓展,可按照下面步骤操作:

php -m

若控制台打印模块中有mysqli和mysqlnd,则继续执行:

ps -ef | grep "php"

image

kill 203419
systemctl restart httpd
posted @ 2022-09-05 18:12  S_梦痕  阅读(1016)  评论(0编辑  收藏  举报