此问题在我将Mac升级到OS X El Capitan之后开始。在此之前它工作得很好。OS X中的XAMPP El Capitan - oci_connect():OCIEnvNlsCreate()失败
我正在使用XAMPP并正确设置了Oracle Instant Client以连接Oracle DB。我在安装时遵循了提及here的指示(点击“如何激活OCI8/Oracle for PHP扩展?”)。
但是,当我升级我的操作系统OS X埃尔卡皮坦,它开始显示此警告,
警告:oci_connect():OCIEnvNlsCreate()失败。也有一些是错误的与您的系统 - 请检查DYLD_LIBRARY_PATH包括与Oracle即时客户端库的目录
我正在寻找解决方案都在互联网上(不仅如此),在过去的几天和最近的比赛我发现是这样的: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启用。
我花了很多天的时间。任何帮助将不胜感激。
我按照您的建议添加了'DYLD_LIBRARY_PATH =/Applications/XAMPP/xamppfiles/lib',但仍然出现错误。 –
您需要指向Oracle Instant Client的库。它们是否是这种分配的一部分? – miken32
不,Oracle Instant Client手动安装在'/ Applications/XAMPP/xamppfiles/lib'文件夹中,并且在我将操作系统升级到El Capitan之前工作正常。 –