[PHP7] 使用 php-fpm 解决 PHP 和 OracleDB 字符编码不匹配的问题

当使用php-fpm连接到Oracle数据库时出现乱码问题,以下是处理方法。

文字编码不匹配

PHP使用的是UTF-8编码。
但很遗憾,OracleDB的字符编码是JA16SJIS。

设置环境变量

设置下列3个环境变量。

#!/bin/bash
export ORACLE_HOME=/usr/lib64
export LD_LIBRARY_PATH=/usr/lib64
export NLS_LANG=Japanese_Japan.JA16SJIS

将其添加到启动脚本

请在php-fpm的启动脚本中添加以下内容。

# Oracle Client
. /etc/profile.d/oracle.sh

当完成后,重新启动php-fpm。

请参考

在Debian Wheezy上安装nginx、php-fpm与oracle。

小话

如果不使用PHP-FPM,例如使用Apache2.2系列时。

可以将环境变量指定为根环境变量,或者在/etc/sysconfig/httpd中添加。

追加记录

进行yum更新php-fpm后,请注意启动脚本会被覆盖。

补充

# Additional environment file
if [ -f /etc/sysconfig/php-fpm ]; then
      . /etc/sysconfig/php-fpm
fi

因为上面写着这样,所以我重新在/etc/sysconfig/php-fpm中进行了描述。