这个问题是在我将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"
请勿禁用系统完整性保护。它的存在是有原因的。