0

PHP経由で、ネットワーク内の別のコンピューターからUbuntu 13サーバー上のOracle 11gR2 Xeに接続しようとしています。ここのようにoci_connectから続くインストールと例を使用して います:

<?php
query_cities();
function query_cities() {
if {
$c = oci_connect("hr", "hr", "localhost:1521/XE");
;
} else {
echo "No connection"; } 
?>

または次のような別の例:

$c = oci_connect("hr", "hr", "192.168.1.33:1521/XE");

SqlPlus を介して DB でリモート接続を有効にしました

SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);

ユーザーHRのロックを解除しました

SQL> ALTER USER hr ACCOUNT UNLOCK;

しかし、netstatのように、SQL Developerからネットワーク上のIPv6を介した接続しか見つけることができません:

tcp6 0 0 192.168.1.33:1521 192.168.1.2:57563 確立済み 14843/oracleXE

tcp6 0 0 192.168.1.33:1521 192.168.1.2:59314 確立済み 15665/oracleXE

私のブラウザからではなく、tcp IPv4 上にありません。ブラウザ ウィンドウは白いままです。反応も応答もなく、エラー メッセージも表示されません。これは、TNSLR IP が IPv6 でのみアクティブであるためか、または oci_connect 式のどれもが十分ではないか、または他に不足していることが原因でしょうか?

この問題について何か助けていただければ幸いです

4

1 に答える 1

0

よし、ログでエラーを探すようにとのアドバイスに基づいて、「*システムに問題があります。ORACLE_HOME と LD_LIBRARY_PATH が設定されていることを確認し、正しいディレクトリを指していることを確認してください*」というメッセージを見つけました。次のように、 st-curriculum.oracleのモデルの後に、Oracle InstantClient をインストールして OCI8 パッケージを再インストールする高度なプロセスを実行します。

  1. 多くの投稿で説明されているように、Oracle 11g R2 XE データベースと Apache2 / PHP サーバーは、Ubuntu 13.10 サーバーに事前にインストールされ、システムが準備されています (前提条件、スワップ ファイル、カーネル パラメーター、メモリ リーク エラーの回復、ライブラリ、および chkconfig エミュレーターを使用)。

  2. apache2サーバーを停止しました

     service apache2 stop
    

    st-curriculum.oracle.comのようにDRCP接続プールを開始しました

  3. PHPHOL という名前のユーザーを作成しました (Oracle のインストール時にまだ実行されていない場合は、代わりに Oracle のサンプル HR スキーマをインストールします)。

  4. 次に、OTN: oracle.com/technetwork/database/features/instant-client/index-100365.html から Basic および SDK Instant Client パッケージをダウンロードし、パッケージを $ORACLE_HOME (/u01/app/oracle/product) に解凍しました。 /11.2.0/xe)

  5. 次に、pecl.php.net/package/oci8 から OCI8 パッケージをダウンロードし、/opt/oci8 に Instantclient としてインストールしました。

    phpise
    ./configure --with-oci8=instantclient,/u01/app/oracle/product/11.2.0/xe/instantclient_11_2
    make / make install
    
  6. Oracle TechnoteのようにOracle環境パスを設定しました

    export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe        
    LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/xe/instantclient_11_2
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH=/opt/oci8/modules
    
    nano /etc/ld.so.conf.d/oracle.conf
    

    挿入: /u01/app/oracle/product/11.2.0/xe/instantclient_11_2

    nano /etc/ld.so.conf.d/oci8.conf
    

    挿入: /opt/oci8/modules

    nano /etc/ld.so.conf.d/shared.conf
    

    インストールされた共有拡張機能の場所を挿入します: /usr/lib/php5/20121212

    ldconfig
    
  7. 次に、構成ファイル php.ini を編集して、extension=oci8.so を追加し、date.timezone ディレクティブを設定し、OCI8 1.4 拡張クラスも追加しました: oci8.connection_class = MYPHPAPP (st-curriculum.oracle.com の例では、上記のリンクを参照してください)

  8. リンクを作成しました: $ORACLE_HOME/instantclient_11_2/libclntsh.so.11.1。$ORACLE_HOME/instantclient_11_2/libclntsh.so を指す

  9. Ubuntu 13.10 サーバーで Oracle データベースと Apache サービスを再起動します。

    /etc/init.d/oracle-xe force-reload
    service apache2 start
    
  10. phpinfo() で oci8 が有効になっていることを確認し、connect.php ファイルを次のように作成しました。

    $conn = oci_connect("hr", "hr", "localhost/xe");
    

または st-curriculum.oracle.com の例のように。

同じネットワーク上の別のコンピューターから、ブラウザーを介してUbuntuサーバー上のOracleデータベースに接続しましたが、

オラクルに接続!

この助けを願っています

于 2013-07-29T19:46:30.647 に答える