背景
当初为了省事,系统中 PHP
软件是通过命令行安装的:
在文章《在 Linux 系统中安装 Oracle 数据库客户端方法(Install Oracle Instant Client on Ubuntu)》中,提到了如何安装 Oracle 在 Linux 平台下的客户端,但是如果 PHP
要调用,还需要启用 oci8
组件。
网上搜了一圈,大多是介绍通过源码来编译安装,但是一开始我们就偷懒直接用命令行来安装 PHP
了,自然不希望再来使用源码安装,最好能够使用命令行直接安装。
比如要安装组件 xml
,可以这么安装:
但是安装 oci
是不行的,提示无此组件包:
方法
经过研究相关资料,oci
可以通过 pear
命令来安装,然后 PHP
版本需要同时安装开发版(因为需要 phpize
命令)。
首先安装 PHP
开发版:
然后安装 pear
组件:
接着安装 oci
:
安装过程中,会提示输入 instantclient
路径,依实际情况输入,比如我这边是:
安装 Oracle instantclient
其实 apt
软件库也提供了 Oracle instantclient
,所以也是可以一键安装的:
输入后就会自动编译安装了,需要注意的是,上面这个流程只是安装 oci8.so
这个 PHP
库文件,我们要使用的话,还需要修改 php.ini
来加载这个库文件,如:
然后在 phpinfo();
中就可以看到 oci8
已经成功启用。
Q&A
1、通过 php -m
命令没看到 oci8
组件:
这是因为我们安装 PHP
时,其实安装了两个版本,一个是 cli
版本的 php7.4
,另一个是 fpm
版本的 php-fpm7.4
,在上面的操作中,我们只修改了 fpm7
的 php.ini
,而 cli
的 php.ini
没有同步修改,且执行 php -m
调用的是 cli
,所以执行这个命令时不会显示 oci8
组件,我们只需要把 cli
的 php.ini
一起修改了就可以了。
cli
版本修改后立即生效。
2、安装 oci
时提示 Package "oci8" Version "3.3.0" does not have REST xml available
:
这是因为针对不同版本的 PHP
,oci8
也有是对应版本要求,比如针对目前 Debian 11 默认源中的 php7.4
,对应的 oci8
版本是 2.2.0
,若不指定版本则默认安装的是 3.3.0
版本,所以会报错,我们只要安装指定版本 oci
即可,具体版本限制,可参见官方说明。
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/7745.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~