2016-02-12 75 views
0

此问题在我将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启用。

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

回答

0

/System/Library/LaunchDaemons/org.apache.httpd.plist仅用于控制内置于OS X.

Apache服务器的行为要设置DYLD_LIBRARY_PATH的XAMPP版本的Apache,你将需要编辑的启动脚本:

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" 

不要禁用小号系统完整性保护。这是有原因的。

+0

我按照您的建议添加了'DYLD_LIBRARY_PATH =/Applications/XAMPP/xamppfiles/lib',但仍然出现错误。 –

+0

您需要指向Oracle Instant Client的库。它们是否是这种分配的一部分? – miken32

+0

不,Oracle Instant Client手动安装在'/ Applications/XAMPP/xamppfiles/lib'文件夹中,并且在我将操作系统升级到El Capitan之前工作正常。 –

相关问题