2016-10-19 16 views
1

私はサーバーを制御しないのでPHP 5.3.3を使用しています。 CodeIgniter 3.1.0も使用しています。私は、Oracleサーバー、Oracle 11gリリース11.2.0.4.0に接続するためにCIを使用しようとしています。Codeigniterデータベースのヘルプ? PHP connect works

私はPHPのoracle_connectを使用してうまく接続できます

$connect_string = "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = HOSTNAME)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SID = MYSID)))"; 
$oconnect = oci_connect(USERNAME, PASSWORD, $connect_string); 
$query = "select * from DB.TABLE"; 
$stid=oci_parse($oconnect, $query); 
$r = oci_execute($stid); 
while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS+OCI_ASSOC)) { 
    print_r($row); 
} 

しかし、私はCodeIgniterの内からDB接続を設定しようとすると、私はTNS名が知られている、またはそれができるとされていないというエラーが出ます接続していないか、サービスが不明であることを示します。どのように私はそれを微調整するかによって異なります。

CodeIgniterの例が間違っている可能性があることに注意してください。 dsnはSID =を使用します(例ではSERVICE =です)。 PHPのoci_connectのためにSID =を示唆したというPHPマニュアルのユーザーのコメントを読むまではありませんでした。

は、ここで私はCodeIgniterのために持っているものだ:起こってすることができるかについて

$dsn_string = "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = HOSTNAME)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SID = MYSID)))"; 
$db['default'] = array(
    'dsn' => $dsn_string, 
    'hostname' => 'HOSTNAME', 
    'username' => 'USERNAME', 
    'password' => 'PASSWORD', 
    'database' => 'DB', 
    'dbdriver' => 'oci8', 
    'dbprefix' => '', 
    'pconnect' => FALSE, 
    'db_debug' => (ENVIRONMENT !== 'production'), 
    'cache_on' => FALSE, 
    'cachedir' => '', 
    'char_set' => 'utf8', 
    'dbcollat' => 'utf8_general_ci', 
    'swap_pre' => '', 
    'encrypt' => FALSE, 
    'compress' => FALSE, 
    'stricton' => FALSE, 
    'failover' => array(), 
    'save_queries' => TRUE 
); 

任意のアイデア?私は他にもいくつか試してみるつもりです。私はCIのdb接続を無視することができますが、主にフロントエンドのAPIプロバイダとして使用しているので、CIを使用している最大の理由はdbです。

ありがとうございます!

+0

[要件](https://codeigniter.com/userguide3/general/requirements.html)が不足している可能性がありますか? – Tpojka

+0

おそらく[EZCONNECT](http://www.orafaq.com/wiki/EZCONNECT)の構文を試してみてください: '$ dsn = 'hostname/mysid';' – timclutton

答えて

0

@Tpojka - 私は与えられたサーバーを使用する必要がありますが、これは問題ではありませんでした。

問題は.htaccessファイルでした。私は既存の.htaccessを使用し、それが次の行を持っていた:それはかなり正常なラインだから

DirectoryIndex index.php 

は、私が最初にそれの何を考えていませんでしたが、その後私は、私は私のconfig.phpを変更していたことに気づきましたURLからindex.phpを削除します。 .htaccessからその行を削除するとすぐに、すべてが再び動作するようになりました。

シース。私はそれがデータベースエラーを引き起こすとは思わなかったが、それはエラーの最後を取り除く究極の修正であった。