2017-04-27 25 views
1

的Ubuntu 16.10/nginx的/ php7.0/ORACLE 11 XEOCIEnvNlsCreate()失敗 - 請檢查ORACLE_HOME和> LD_LIBRARY_PATH

我試圖通過PHP連接到Oracle databas。我得到以下錯誤。

$conn = oci_connect('login', 'pass', 'localhost/xe'); 

警告:oci_connect():OCIEnvNlsCreate()失敗。也有一些是 不對您的系統 - 請檢查ORACLE_HOME和 LD_LIBRARY_PATH設置,並指向正確的目錄中 /var/www/blah.php上線26

警告:oci_connect():錯誤,而試圖檢索錯誤 文本ORA-01804在/var/www/blah.php在線26

真的請求變量,它們將是空的。此代碼返回空字符串。

$test = getenv('LD_LIBRARY_PATH')." ".getenv('ORACLE_HOME'); 
print ("$test"); 

但是在phpinfo()中顯示它們。

http://img.radiokot.ru/files/21274/medium/19bdtra7xs.PNG

我可以寫環境變量的每個文件,但是這是不是一種選擇。

putenv("ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe"); 
putenv("LD_LIBRARY_PATH=-Wl,-rpath,/u01/app/oracle/product/11.2.0/xe/lib -L/u01/app/oracle/product/11.2.0/xe/lib -lclntsh"); 

我該怎麼辦?

+0

你最終解決了這個問題嗎?在那種情況下,如何?謝謝 – andcl

回答

0

我們沒有相同的基礎架構,但我只是解決了這個相同的問題:

  • 阿帕奇
  • CentOS7
  • PHP 5
  • 甲骨文12cR1

的消息稱:

請檢查ORACLE_HOME和LD_LIBRARY_PATH設置,並指向正確的目錄

在Apache中,有一個文件,你可以設置環境變量: /etc/sysconfig/httpd。必須有一個用於nginx的配置文件。

我添加了所需的環境變量。 假設

  • ORACLE_HOME是/oracle/product/12.1.0/dbhome_1
  • Oracle客戶程序下/oracle/product/12.1安裝。0 /客戶端

地址:

ORACLE_HOME=/oracle/product/12.1.0/dbhome_1 
LD_LIBRARY_PATH=/oracle/product/12.1.0/dbhome_1/lib:/oracle/product/12.1.0/dbhome_1/network/lib:/oracle/product/12.1.0/client/lib 

我還補充說:

TNS_ADMIN=/oracle/product/12.1.0/dbhome_1/network/admin 
ORACLE_SID=<your sid> 

更新/etc/sysconfig/httpd我只是重新啓動Apache的服務的httpd後,就是這樣:

$ sudo systemctl restart httpd 

我希望他lps!