Ubuntu安装PHP8.2 编译安装 oci8 pdo_oci扩展

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键回车即可。

sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php

sudo apt update
sudo apt install php8.2-fpm(php8.2-cli)

 

查看已安装的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

查看已安装的php扩展

 

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

 

PHP源码编译安装扩展

官方github链接:https://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

 

 

phpize命令报错了 需执行以下命令:

apt install php8.2-dev

 再次执行phpize成功了

 

编译 oci8

./configure --with-oci8=instantclient,/usr/local/src/instantclient_21_13

make && make install

 

编译 pdo_oci

cd ../pdo_oci

phpize

./configure --with-pdo_oci=instantclient,/usr/local/src/instantclient_21_13

make && make install

 

 

 vim /etc/php/8.2/cli/php.ini

 

 开启扩展 执行 php --ini 发现有报错了

 

问题:libnnz21.so: cannot open shared object file: No such file or directory

原因:libnnz21.so 没加载到

ldd /usr/lib/php/20220829/oci8.so

 

vim /etc/profile
export LD_LIBRARY_PATH=/usr/local/src/instantclient_21_13:$LD_LIBRARY_PATH

 

 libaio.so.1也没有加载到

apt-get install libaio1 libaio-dev

 解决~

 

最后执行php -m 查看已安装的扩展 发现oci8和pdo_oci已成功安装,大功告成~

 

 

参考文档:

https://www.mryunwei.com/242425.html

https://stackoverflow.com/questions/72592165/install-and-enable-oci8-extension-for-php8-1-fpm-in-dockerfile

 

posted @ 2024-02-07 09:58  七彩鱼丸  阅读(626)  评论(0编辑  收藏  举报