Ubuntu安装PHP8.2 编译安装 oci8 pdo_oci扩展
Table of Contents
前言
PHP 8.2是PHP语言的最新版本。新特性包括,只读类,允许布尔值作为独立类型等。从mysqli中删除libmysql的支持等。
时至今天,主流的HTTP服务器已不是Apache,我们推荐使用Nginx作为HTTP服务器,Nginx相对于Apache来说简单且性能更好。
本教程将向您展示如何在Ubuntu 20.04安装PHP 8.2并将其与Nginx集成。在撰写本文时,默认的Ubuntu 20.04存储库包括PHP 7.4版本。
我们将从ondrej/php的PPA存储库中安装PHP。升级或安装PHP 8之前,请确保您的应用程序支持它。
OndřejSurý维护着一个包含多个PHP版本的存储库。请运行下面的命令安装PHP 8.2。
终端将会提示你是否继续的消息,Press [ENTER] to continue or Ctrl-c to cancel adding it.。
按Enter键回车即可。
查看已安装的php版本
安装PHP扩展
PHP扩展是已编译的动态库,它扩展了PHP的核心功能。PHP扩展程序作为软件包提供,可以通过apt
安装PHP扩展。
按照惯例PHP扩展的通常是以php开头,接着是版本号,然后是-
和扩展名称。这是通用的格式 php8.2-[extname]
。
并不是所有php扩展都可以通过apt命令进行安装,Apt仓库仅提供常用PHP扩展,某些扩展可能需要自己手动编译。
例如,要安装MySQL和GD扩展,您可以运行命令 sudo apt install php8.2-mysql php8.2-gd
。
需要apt安装的扩展有:php8.2-mysql php8.2-mbstring php8.2-curl php8.2-redis php8.2-bcmath php8.2-soap php8.2-swoole
sudo apt install php8.2-mysql php8.2-mbstring php8.2-curl php8.2-redis php8.2-bcmath php8.2-soap php8.2-swoole
Bash查看已安装的php扩展
准备oracle环境
oci8 pdo_oci需要手动编译安装 (划重点)
oracle客户端下载链接:Oracle Instant Client Downloads for Linux x86-64 (64-bit)
https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
选择最新版本 version:21.13
基础包和sdk包都默认选的第一个
cd /usr/local/src
sudo wget https://download.oracle.com/otn_software/linux/instantclient/2113000/instantclient-basic-linux.x64-21.13.0.0.0dbru.zip
sudo wget https://download.oracle.com/otn_software/linux/instantclient/2113000/instantclient-sdk-linux.x64-21.13.0.0.0dbru.zip
sudo apt install unzip
unzip instantclient-basic-linux.x64-21.13.0.0.0dbru.zip
unzip instantclient-sdk-linux.x64-21.13.0.0.0dbru.zip
BashPHP源码编译安装扩展
官方github链接:
github.com/php/php-src/tree/php-8.2.15
下载:
wget https://github.com/php/php-src/archive/refs/tags/php-8.2.15.zip
# 代理加速版本选其一
wget https://mirror.ghproxy.com/https://github.com/php/php-src/archive/refs/tags/php-8.2.15.zip
unzip php-8.2.15.zip
cd php-src-php-8.2.15/ext/oci8/
phpize
Bashphpize命令报错了 需执行以下命令:
apt install php8.2-dev
Bash再次执行phpize成功了
编译 oci8
./configure --with-oci8=instantclient,/usr/local/src/instantclient_21_13
make && make install
Bash编译 pdo_oci
cd ../pdo_oci
phpize
./configure --with-pdo_oci=instantclient,/usr/local/src/instantclient_21_13
make && make install
Bashvim /etc/php/8.2/cli/php.ini
Bash测试扩展
开启扩展 执行 php --ini 发现有报错了
问题:libnnz21.so: cannot open shared object file: No such file or directory
原因:libnnz21.so 没加载到
ldd /usr/lib/php/20220829/oci8.so
Bashvim /etc/profile
export LD_LIBRARY_PATH=/usr/local/src/instantclient_21_13:$LD_LIBRARY_PATH
Bashlibaio.so.1也没有加载到
apt-get install libaio1 libaio-dev
Bash解决~
最后执行php -m 查看已安装的扩展 发现oci8和pdo_oci已成功安装,大功告成~
感叹一下:stackoverflow真好用