1

log_reader と log_writer の 2 つのオラクル アカウントがあります。log_reader には、データを読み取るための読み取りアクセス権があります。log_writer には、データベースにデータを書き込む書き込みアクセス権があります。アプリケーションは Apache から実行され、Perl と PHP を使用します。パスワードは、php/perl スクリプトにハードコードされています。最近、ハードコーディングされたパスワードを排除するために Oracle Wallet に移行しようとしています。Oracle ウォレットが構成されており、log_reader アカウントと log_writer アカウントの両方で sqlplus と perl が動作します。log_reader アカウントの php。php はログ ライター アカウントでは機能しません。次のエラーが発生します-

insert err = 1031:ORA-01031: insufficient privileges

PHP コード -

    $conn = OCIPLogon("/", "", "SLACDEV", "", OCI_CRED_EXT);

つまり、Oracle Wallet では、sqlplus と Perl には問題がありません。しかし、PHP の場合、データベースにデータを書き込み/挿入しようとすると問題に直面します。PHP の読み取りは正常に動作します。

これまでのところフォローしようとしましたが、運がありません-

    $conn = OCIPLogon("/", "", "SLACDEV", "", OCI_CRED_EXT);
    $conn = OCIPLogon("/", "", "SLACDEV", "", OCI_CRED_EXT+OCI_SYSOPER);
    $conn = OCIPLogon("/", "", "SLACDEV", "", OCI_CRED_EXT+OCI_SYSDBA);

php はログ ライター アカウントでは機能しません。次のエラーが発生します-

insert err = 1031:ORA-01031: insufficient privileges
4

1 に答える 1

0

解決策は、2 つのウォレット エントリを作成し、2 つの接続名を tnsnames.ora に設定し、Web サーバーを起動する環境に環境変数が設定されていることを確認することでした。これを解決するために助けてくれた Christopher Jones に感謝します。

于 2012-10-30T23:52:24.657 に答える