0

Oracle 11g データベースを xampp サーバーに接続する必要があり、ローカル接続とリモート接続の両方が必要です。そのために私がしたことは、最初にOracle 11gエクスプレスエディションをインストールし、ダウンロードしinstantclient-basic-nt-11.2.0.4.0て抽出したフォルダーを配置しinstantclient_11_2C:\環境変数(システム変数)を設定すると、パス値が次のようになりますpath=C:\oraclexe\app\oracle\product\11.2.0\server\bin;C:\instantclient_11_2

次に、ファイルの;extension=php_oci8.dllextension=php_oci8_11g.dllから削除しました。php.ini次に、最初にローカルデータベースに接続しようとしました:

$tns_turjo = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.13)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))'; // tns of another pc
$tns_ishrak = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.18)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))'; // tns of my pc

$conn = oci_connect('system', 'cibl123*#', $tns_turjo);
if($conn) {
    echo "connected";
}
else {
    echo "not";
}

渡す$tns_ishrakとエコーconnectedが発生しますが、別のPCのOracleデータベースにアクセスしようとすると、$tns_turjoエコーnotが発生し、エラーが発生します

Message: oci_connect(): ORA-12170: TNS:Connect timeout occurred

別のPCに接続しているときに、ユーザー名とパスワードも変更しました。

注意:Apacheを起動するたびにphp.iniファイルから.dll拡張子を有効にした後、xamppでポップアップ警告が表示されますModule 'oci8' is already loaded

リモート接続の問題を解決するにはどうすればよいですか?

4

1 に答える 1

0

InstantClient をインストールする必要はありません。Oracle XE には、完全な Oracle クライアントが含まれています。

リモート接続が機能しない理由は多数考えられますが、(私の経験では) 最も一般的な理由は次のとおりです。

  1. PC のファイアウォールが接続をブロックしています。
  2. リモート PC のファイアウォールが接続をブロックしています。
  3. TNS リスナーがリモート PC で実行されていません。
  4. 接続文字列が間違っています。

PHPなしでリモートPCに接続できますか? SQL*Plus または単にtnspingコマンドを使用して試しましたか?


注意:Apacheを起動するたびにphp.iniファイルから.dll拡張子を有効にした後、xamppでポップアップ警告が表示されますModule 'oci8' is already loaded

OCI モジュールを複数回ロードしようとしています。OCIモジュールを1つだけ有効にする必要があるため、php.iniファイルに次のようなものがある場合、それが問題です:

extension=php_oci8.dll
extension=php_oci8_11g.dll

インストールphp_oci8_11g.dllしたバージョンであるため、有効にする必要があります。

于 2015-05-25T11:48:33.683 に答える