![](/img/trans.png)
[英]XAMPP in OS X El Capitan - oci_connect(): OCIEnvNlsCreate() failed
[英]Warning: oci_connect(): OCIEnvNlsCreate() failed
错误
Warning: oci_connect(): OCIEnvNlsCreate() failed. There is something wrong with your system - please check that LD_LIBRARY_PATH includes the directory with Oracle Instant Client libraries in
Warning: oci_connect(): Error while trying to retrieve text for error ORA-01804
apache php oracle安装方法
1. /etc/配置文件
##################### oracle oci setting
export LD_LIBRARY_PATH=/usr/lib/oracle/19.6/:$LD_LIBRARY_PATH
2.下载oracle 19.6 Instantclient下载/安装
https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
download instantclient-basic-linux.x64-version.zip
download instantclient-sdk-linux.x64-version.zip
download instantclient-sqlplus-linux.x64-version.zip
unzip *
mv instantclient_19_6/ /usr/lib/oracle/19.6
3.ldconfig设置
echo '/usr/lib/oracle/19.6' > /etc/ld.so.conf.d/oracle-instantclient.conf
ldconfig
4. vi /etc/tnsnames.ora
ORA_TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ip_address)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = ip_address)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORA_TEST)
(SERVER = dedicated)
)
)
5. oracle 连接测试 ==> 成功
sqlplus test/test@ORA_TEST
6. web 服务器安装
yum -y install httpd httpd-devel mod_ssl
7. php 安装
yum-config-manager --enable remi-php56
yum --enablerepo=remi-php56 -y install php php-devel php-cli php-common php-mbstring php-mcrypt php-xml php-pear php-curl php-pecl-imagick php-oci8 php-soap
8. PHP 警告:PHP 启动:无法加载动态库 'oci8.so'
ln -s /usr/lib/oracle/19.6/libclntsh.so.19.1 /lib64/libclntsh.so.19.1
ln -s /usr/lib/oracle/19.6/libnnz19.so /lib64/libnnz19.so
ln -s /usr/lib/oracle/19.6/libclntshcore.so.19.1 /lib64/libclntshcore.so.19.1
9. phpinfo() oci8 in phpinfo
10.控制台php测试==>成功
php -r "oci_connect('test', 'test', 'ORA_TEST');"
11. web 站点 php 代码 ==> 失败
$oracle = oci_connect('test' , 'test', 'ORA_TEST', "AL32UTF8");
Warning: oci_connect(): OCIEnvNlsCreate() failed. There is something wrong with your system - please check that LD_LIBRARY_PATH includes the directory with Oracle Instant Client libraries in
Warning: oci_connect(): Error while trying to retrieve text for error ORA-01804
12. php -v, php -ri oci8 php -v, ZE1BFD7602321E419CEE4
您的 web 服务器未正确配置为为 PHP 设置 LD_LIBRARY_PATH。 有关类似示例,请参阅此帖子,并确保为 web 服务器运行时正确设置环境。
您正在设置很多不需要设置的东西。 再次阅读Instant Client 安装说明。
让我们来看看:
导出 ORACLE_HOME=/usr/lib/oracle/19.6
使用 Oracle Instant Client 时切勿设置 ORACLE_HOME。 它可能导致 ORA-1804 等错误或其他启动问题。
导出 TNS_ADMIN=$ORACLE_HOME/network/admin
如果您有更简单的安装,则不需要设置它。 请参阅 Instant Client 安装说明。
导出 LD_LIBRARY_PATH=/usr/lib/oracle/19.6/lib:$ORACLE_HOME/sdk:$LD_LIBRARY_PATH
使用安装说明中显示的ldconfig
,这样您就不必担心设置 LD_LIBRARY_PATH 并确保它通过 Apache(PHP 的一个常见问题 - 您可能遇到的问题)。 sdk
目录中没有库,因此绝对不需要在那里。
导出 DYLD_LIBRARY_PATH=/usr/lib/oracle/19.6/lib:$DYLD_LIBRARY_PATH
这适用于您未运行的 macOS
导出 PATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/bin
导出 NLS_LANG=AMERICAN_AMERICA.AL32UTF8
这些可能很有用。
mkdir -p /usr/lib/oracle/19.6/bin /usr/lib/oracle/19.6/lib /usr/lib/oracle/19.6/network/admin
ln -s libclntsh.so.19.6 libclntsh.so
ln -s libocci.so.19.6 libocci.so
[。 . . ]
这一切似乎都非常令人费解。 为什么不直接将解压缩的目录移动到 /opt/oracle/instantclient_19_6 之类的位置并按照说明运行ldconfig
? 然后你不需要制作链接、目录、复制文件等。
您可能会做得更糟,请查看https://github.com/oracle/docker-images/tree/master/OracleLinuxDevelopers/oraclelinux7/php的 PHP Dockerfiles 中的安装说明
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.