sql >> データベース >  >> RDS >> Oracle

Oracle 11g PHP oci_connectがOCIEnvNlsCreate()に失敗する

    OCIEnvNlsCreate()が失敗しましたか?地獄へようこそ...

    スレッドが古いことは知っていますが、問題はまだ存在しています。そして通常、この問題への回答はサードパーティのサイト、通常は404にリダイレクトされます。

    問題から始めましょう。エラー自体はかなり一般的です。そのドキュメントは、「libがクラッシュしました...なぜかわからない」と要約されています。 「ここにランダムな神の名前を挿入する」ための構成、再インストール、祈りなど、さまざまな解決策があります。

    最も一般的なソリューションの短いリストは次のとおりです。

    1。変数を.phpファイルに入れます。

        putenv("LD_LIBRARY_PATH=$newld");
    
    where $newld is the link to your library.
    

    2。変数LD_LIBRARY_PATHを削除します 、存在する場合(ええ、1で示した方法)、phpファイルからapache2.conf、httpd.conf、/ etc / environment、またはディストリビューション/バージョンが環境変数用に持っているファイルに配置します。簡単なガイドは、ここ にあります。 またはインターネット上のどこでも。なぜですか?

    インストールドキュメントに記載されているとおり。また、後でapacheを再起動します。配布/バージョンベースですが、おそらくコマンドはservice httpd restartです 。

    1. oci8を再インストール 。何度でも。無理に押し込まないでください。強制することはそれを悪化させるだけです。また、コンパイルしてみてください(パッケージをダウンロードする./configure -'all the fancy commands you'll need to use' 次に、make install )。

    2. 正しいLD_LIBRARY_PATHを取得したことを確認してください 。面白いことですよね? Oracleがフォルダclient/lib/を作成したことに気づかなかったかもしれません。 N個の異なる場所 これには多かれ少なかれ同じファイルが含まれていますが、それらの唯一の違いは、これらのフォルダの1つを除くすべてを選択すると、前述のエラーが発生することです。 。健全性チェック?

    3. php/apacheを再インストールします 。問題の原因となっている古いインストールがあった可能性があります。したがって、apt-get purge php*を使用します またはyum remove php* または、ディストリビューションに対して同じトリックを行うものは何でも、良いスタートになります。

    編集 PHPのアップグレード後、問題が再発しましたが、今回は別の解決策を使用しました。

    1. SYSCONFIGの編集 ファイル/etc/ sysconfig/httpdを編集します。最後にこれらの2行を追加します:

      エクスポートLD_LIBRARY_PATH=/ path / to.libexport ORACLE_HOME =/ path / to / home

    2. あきらめてマニュアルを読む こちらにあります。

    これらのいずれも役に立たない場合は、悲しみの壁 を自由に閲覧してください。 、解決策について...



    1. 日付はmysqlに0000-00-0000:00:00として挿入されています

    2. regexp_substrを使用して、コンマ(二重引用符を除く)で単語を選択します

    3. heroku pg:pullパスワード認証に失敗しました

    4. mysqlコネクタを使用したプログラムの構築エラー