1

PHP5からOracle9.2への接続に問題があります。OCIの1.4.2と1.4.5の両方を試しましたが、Oracle10g以降に接続できます。次のようにテストデータベース接続スクリプトを設定しました。

PHPコード:

echo "Testing Connection...";
ociinternaldebug(1);
$conn = oci_new_connect('someuser', 'somepassword', '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.0.0.2 )(PORT = 1521)) (CONNECT_DATA = (SID = ORCL)))');

if (!$conn) {
    $e = oci_error();
    print_r ($e);
}
else
{
    echo('Successful');
}

このエラーが発生します:

OCI8デバッグ:OCINlsEnvironmentVariableGet at(ext \ oci8 \ oci8.c:1826)
OCI8 DEBUG L1:共有プールの使用:(0x2078b68)at(ext \ oci8 \ oci8.c:3028)
OCI8デバッグ:OCIHandleAlloc(ext \ oci8 \ oci8.c:3039)
OCI8デバッグ:OCIHandleAlloc(ext \ oci8 \ oci8.c:3049)
OCI8デバッグ:OCIAttrGet at(ext \ oci8 \ oci8.c:3082)
OCI8デバッグ:OCIAttrGet at(ext \ oci8 \ oci8.c:3083)
OCI8 DEBUG L1:(numopen = 0)(numbusy = 0)at(ext \ oci8 \ oci8.c:3085)
OCI8デバッグ:OCISessionGet at(ext \ oci8 \ oci8.c:3096)
OCI8デバッグ:OCIErrorGet at(ext \ oci8 \ oci8.c:1632)
OCI8デバッグ:(ext \ oci8 \ oci8.c:2218)のOCIHandleFree
OCI8デバッグ:(ext \ oci8 \ oci8.c:2221)のOCIHandleFree
OCI8デバッグ:OCIErrorGet at(ext \ oci8 \ oci8.c:1632)
配列
((
    [コード]=>1017
    [メッセージ]=>** ORA-01017:無効なユーザー名/パスワード; ログオンが拒否されました**
    [オフセット]=>0
    [sqltext] =>
)。
4

2 に答える 2

1

同じマシンから/同じユーザー名/パスワードでsqlplusを使用して同じデータベースにログオンできますか?

于 2011-04-06T13:31:55.450 に答える
0

パスワードに文字セットの問題がある可能性はありますか?クライアントまたはサーバーの1つでサポートされていないキャラクターがそこにありますか?Mabye PHPは文字を誤って変換するか、SQL * Plusを使用するたびに誤って変換され、PHPによって送信された「正しい」バージョンがサーバーに間違って表示される可能性があります。

このクエリを実行して、サーバーが実際に実行していることを確認します。戻りコードが1017の場合、サーバーは間違ったユーザー名またはパスワードを取得しています。

select userid, userhost, terminal, returncode, ntimestamp#
from sys.aud$
order by ntimestamp# desc;

Oracleのエラーメッセージがうそをついているのを見たことがないと思います。しかし、いくつかのプログラムがエラーメッセージを誤って解釈するのを見てきました。たとえば、パスワードの有効期限が切れていても猶予期間がある場合、Oracleはエラーを返しますが、それでもログインは許可されます。SQL * Plusは「ORA-28002:パスワードは8日以内に期限切れになります」と警告しますが、一部のプログラムはこれをログインの失敗として誤って解釈し、「不正なユーザー名/パスワード」とさえ言う場合があります。しかし、これはOracle製品であり、Oracleエラーコードが表示されているため、これは大したことではありません。

于 2011-04-07T06:23:30.873 に答える