Codeigniter数据库帮助?PHP连接工作


Codeigniter database help? PHP connect works

我使用PHP 5.3.3,因为我不控制服务器。我也使用CodeIgniter 3.1.0。我正在尝试使用CI连接到Oracle服务器,Oracle 11g发布11.2.0.4.0。

我可以使用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手册中的用户评论,他们才建议为php的oci_connect设置SID=

这是我对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提供者,因此db是我甚至使用CI的最大原因。

谢谢!

@Tpojka -我必须使用我给出的服务器,但事实证明这不是问题。

问题是。htaccess文件。我使用了一个现有的。htaccess,它有以下一行:

DirectoryIndex index.php

一开始我没怎么想,因为这是很正常的一行,但后来我意识到我已经修改了config.php,从url中删除了index.php。当我从。htaccess中删除这一行时,一切又开始工作了。

天哪。我不认为这会导致数据库错误,但这是消除最后一个错误的最终解决方案。