2017-04-27 27 views
1

のUbuntu 16.10/nginxの/ php7.0 /オラクル11 XEは、OCIEnvNlsCreate()が失敗しました - ORACLE_HOMEおよび> LD_LIBRARY_PATH

は、私はPHP経由でのOracle databasに接続しようとしていることを確認してください。そして、私は次のエラーを受け取ります。

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

警告:にoci_connect():は、OCIEnvNlsCreate()に失敗しました。お使いのシステムに何か問題 があります - ライン上 /var/www/blah.phpに右のディレクトリに26

警告ORACLE_HOMEと LD_LIBRARY_PATHが設定されていることを確認し、ポイントしてくださいにoci_connect():エラーをしようとしたときに、

本当に変数を要求ライン26にORA-01804 /var/www/blah.phpにエラー のテキストを取得するために、彼らは空になります。このコードは空の文字列を返します。

$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

メッセージが書かれています:

/etc/sysconfig/httpd

ORACLE_HOMEとLD_LIBRARY_PATHはApacheでの右側のディレクトリ

に設定し、ポイントされていることを確認してください、あなたは環境変数を設定することができますファイルがあります。 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> 

を私はApacheのサービスのhttpdを再起動し、それはそれだった/etc/sysconfig/httpdを更新した後:

$ sudo systemctl restart httpd 

私はそれを望むlps!

関連する問題