我正在运行 Ubuntu-nginx-php7-fpm 机器,但 phpinfo() 没有检测到 oracle 扩展。
我如何告诉 nginx 或 php oracle-php 扩展已安装?
该机器是另一台运行 oracle php7-fpm 的机器的克隆版。
当从 php 运行 phpinfo() 时,oracle 没有列出,甚至 oci-connect 也不起作用或在 error.log 中列出
答案1
我无法提供您案例中缺少的内容。以下是为 php-fpm 启用 oci 8 的所有步骤。
首先按照以下步骤安装 oci8.so:
安装 PECL、PHP 开发文件、Build Essential、Unzip 和 AIO 库
apt-get install php-pear php7.0-dev build-essential unzip libaio1
创建 oracle 目录
mkdir /opt/oracle
从此处下载即时客户端关联。下载 11.2 Basic 和 SDK。只有 11.2 版本适合我。
移动下载的文件
mv instantclient-* /opt/oracle
使用 unzip 命令 (unzip) 解压文件,重命名创建的目录
mv instantclient_11_2 instantclient
cd 进入即时客户端目录并创建以下软链接
ln -s libclntsh.so.11.2 libclntsh.so
ln -s libocci.so.11.2 libocci.so
cd to /opt
设置目录的权限
chown -R root:www-data /opt/oracle
将即时客户端添加到 ld 配置文件中
echo /opt/oracle/instantclient > /etc/ld.so.conf.d/oracle-instantclient
更新动态链接器运行时绑定
ldconfig
使用 PECL 安装 OCI8
pecl install oci8
当您确定客户端位置时,请输入以下内容:
instantclient,/opt/oracle/instantclient
最后配置php.ini
此时您的 oci8.so 已可以使用。只需将其包含到您的 php.ini 文件中即可。
cd /etc/php/mods-available/
vi oci.ini
然后将这一行添加到文件“extension=oci8.so”
现在创建一个这样的符号链接:
cd /etc/php/7.0/fpm/config.d/
ln -s /etc/php/mods-available/oci.ini 20-oci.ini
添加 oracle 环境变量:
vi /etc/environment
添加以下行:
# Oracle Instant Client
export LD_LIBRARY_PATH="/opt/oracle/instantclient"
export TNS_ADMIN="/opt/oracle/instantclient"
export ORACLE_BASE="/opt/oracle/instantclient"
export ORACLE_HOME=$ORACLE_BASE
最后重新启动 fpm 服务:
sudo php7.0-fpm restart
您必须能够通过 phpinfo 检查 oci8 扩展。