XAMPP in OS X El Capitan - oci_connect(): OCIEnvNlsCreate()


XAMPP in OS X El Capitan - oci_connect(): OCIEnvNlsCreate() failed

这个问题是在我将Mac升级到OS X El Capitan之后开始的。在此之前,它工作得很好。

我正在使用XAMPP,Oracle Instant Client已正确设置为与Oracle DB连接。我在安装时遵循了此处提到的说明(单击问题"如何激活 PHP 的 OCI8/Oracle 扩展?

但是,在我将操作系统升级到OS X El Capitan后,它开始显示此警告,

警告:oci_connect((: OCIEnvNlsCreate(( 失败。您的系统有问题 - 请检查DYLD_LIBRARY_PATH是否包含包含 Oracle 即时客户端库的目录

在过去的几天里,我正在互联网上(不仅是SO(寻找解决方案,我发现的最接近的匹配是:https://stackoverflow.com/a/20670810/5645769。因此,我尝试编辑文件org.apache.httpd.plist,如答案所示。但是我遇到了这个错误:

您不拥有文件"org.apache.httpd.plist",也没有写入它的权限。您可以复制此文档并编辑副本。只有副本才会包含您的更改。

我向OP询问了这个问题,他的回答对解决问题没有任何帮助。所以我继续寻找解决方案。经过几天的搜索,我找到了这篇文章 https://stackoverflow.com/a/32910408/5645769。因此,我按照说明禁用了SIP(系统保护(,然后我能够为我的帐户(以及管理员(添加对文件和包含文件夹的写入权限。在那之后,oci_connect()又开始工作了。

但是当我按照相同的答案再次禁用 SIP 时,同样的错误再次出现。我不确定,但似乎oci_connect()尝试使用的其他文件权限发生了一些事情,但它只能在禁用 SIP 时访问。

目前,我正在努力禁用SIP(不确定,它可能造成什么危害(,我需要一种在保持SIP启用的同时有效的解决方案。

我花了很多天的时间。任何帮助将不胜感激。

>/System/Library/LaunchDaemons/org.apache.httpd.plist仅用于控制OS X内置的Apache服务器的行为。

要为 Xampp 版本的 Apache 设置DYLD_LIBRARY_PATH,您需要编辑其启动脚本:

sudo nano /Applications/XAMPP/xamppfiles/apache2/ctl.sh

在文件的第二行,#!/bin/sh后,您可以添加所需的任何内容:

#!/bin/sh
DYLD_LIBRARY_PATH=/path/to/your/library/files
ERROR=0
HTTPD_STATUS=""
HTTPD_PIDFILE=/Applications/XAMPP/xamppfiles/logs/httpd.pid
HTTPD="/Applications/XAMPP/xamppfiles/bin/httpd -f /Applications/XAMPP/xamppfiles/etc/httpd.conf"

请勿禁用系统完整性保护。它的存在是有原因的。