PHP+OCI = could not find driver

fade

Новичок
Добрый день.

Уже не первый день мучаюсь со связкой PHP+PDO_OCI.

Ситуация следующая...
OC - Debian
PHP - 5.2.17

В phpinfo установлено:
PHP:
oci8
OCI8 Support 	enabled
Version 	1.4.5
Revision 	$Revision: 305257 $
Active Persistent Connections 	0
Active Connections 	0
Oracle Instant Client Version 	10.2
Temporary Lob support 	enabled
Collections support 	enabled

Directive	Local Value	Master Value
oci8.connection_class	no value	no value
oci8.default_prefetch	100	100
oci8.events	Off	Off
oci8.max_persistent	-1	-1
oci8.old_oci_close_semantics	Off	Off
oci8.persistent_timeout	-1	-1
oci8.ping_interval	60	60
oci8.privileged_connect	Off	Off
oci8.statement_cache_size	20	20
и

PHP:
PDO
PDO support	enabled
PDO drivers 	oci

PDO_OCI
PDO Driver for OCI 8 and later	enabled
Но при попытке обратиться к класу PDO выдает: could not find driver

Скрипт такой:
PHP:
PutEnv("ORACLE_HOME=/usr/include/oracle/10.2.0.4/client");
PutEnv("ORACLE_SID=DATAEXCH"); 

try {
    $dbh = new PDO("OCI:dbname=DATAEXCH;charset=CL8KOI8R", "логин", "пароль");
    }
catch (PDOException $e)
    {
    echo $e->getMessage();
    }
Помогите решить проблему...

Заранее спасибо.
 

tony2001

TeaM PHPClub
>PutEnv("ORACLE_HOME=/usr/include/oracle/10.2.0.4/client");
>PutEnv("ORACLE_SID=DATAEXCH");

так работать не будет - инициализация ораклового клиент происходит ДО этих вызовов.

>$dbh = new PDO("OCI:dbname=DATAEXCH;charset=CL8KOI8R", "логин", "пароль");
"oci", а не "OCI".

но вообще, конечно, принято начинать с примеров из документации.
 

fade

Новичок
Спасибо, забыл что есть чувствительность к регистру...

Но вот теперь другая проблема, во время выполнения запроса, либо белый экран, либо такая ошибка:
PHP:
SQLSTATE[42S02]: pdo_oci_handle_factory: Error while trying to retrieve text for error ORA-12154 (/root/oracle/PDO_OCI-1.0/oci_driver.c:463)
Подскажите как победить...
 

tony2001

TeaM PHPClub
для начала не надо из-под рута запускать ничего.

если это не Instant Client, то SID сервера должен быть прописан в tnsnames.ora, который ищется в $ORACLE_HOME/network/admin и /etc.
если инстант, то можно использовать синтаксис dbname=//hostname:port-number/database

всё это написано здесь:
http://www.php.net/manual/en/ref.pdo-oci.connection.php
http://www.php.net/manual/en/function.oci-connect.php
 

fade

Новичок
Спасибо, вроде коннект пошел, буду копать дальше...
 
Сверху