这是我的php代码
$tns = "
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = myservice)
)
)";
$conn = new PDO("oci:dbname=" . $tns, 'user', 'pass');
当我尝试将字符集设置为UTF8时:
$conn = new PDO("oci:dbname=" . $tns . ";charset=UTF8", 'user', 'pass');
会得到:
ERROR: SQLSTATE[HY000]: OCINlsCharSetNameToId: unknown character set name (/app/software/php-5.6.30/ext/pdo_oci/oci_driver.c:610)pdo is NULL
我已经将NLS_LANG设置为AMERICAN_AMERICA.UTF8
,但看起来我的主机需要重启,我现在不能这样做。
那么,我应该怎么做才能将字符集更改为utf8,并将pdo / oci连接到oracle数据库?
我想要:
答案 0 :(得分:1)
花了我4个小时来解决这个问题:
/etc/sysconfig/httpd
vim /etc/sysconfig/httpd
文件
在此文件的末尾添加以下代码
export LD_LIBRARY_PATH=/app/oracle/orahome/lib
export ORACLE_HOME=/app/oracle/orahome
export NLS_LANG=AMERICAN_AMERICA.UTF8
service httpd restart
您必须对pdo
或oracle
或host machine
进行 NOTHING 。
如果您不知道变量的值,只需在命令行中echo $ORACLE_HOME
。
顺便说一句,
所有这三个变量都应该在/ect/profile
中设置,你最好在这两个文件中使它们相同。