[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中进行了描述。