Problema em Conectar PHP com Oracle

1. Problema em Conectar PHP com Oracle

Joao Henrique Macedo
joaohdez

(usa Kurumin)

Enviado em 07/05/2013 - 17:11h

Boa tarde caros colegas.
Já programo em PHP já há algum tempo,porém é a primeira vez que tento conectar o PHP com o oracle,bem vamos ao problema: tenho um servidor linux em minha rede,nele roda o oracle 10g, preciso conectar o script no banco de dados chamado MV2000, segue abaixo meu script e o erro informado no browser:
<?php
$ora_user = 'DBAMV'; //username
$ora_pass = 'rpwrexjklamr'; //user password
$ora_host = '192.168.0.1'; //host name or server ip address
$ora_serv = 'MV2000'; //service name

$ora_conn = oci_connect($ora_user,$ora_pass,$ora_host.'/'.$ora_serv);
if (!$ora_conn){
$ora_conn_erno = oci_error();
echo ($ora_conn_erno['message']."\n");
oci_close($ora_conn);
}
?>




Fatal error: Call to undefined function oci_connect() in C:\wamp\www\avaliacao\conecta_oracle.php on line 7

Desde já agradeço a todos obrigado.
att,João Henrique.


  


2. Driver

Elder dos Santos Pereira
elderdosantos

(usa Ubuntu)

Enviado em 07/05/2013 - 17:13h

A primeira coisa a fazer é conferir se o seu php foi compilado com o driver do oracle.

--with-oci8=instantclient,/path/to/oci/lib




3. Driver do Oracle

Joao Henrique Macedo
joaohdez

(usa Kurumin)

Enviado em 07/05/2013 - 17:52h

Eder,como faço para fazer esta verificação? sou leigo em relação a estas configurações.
No aguardo.
Obrigado.


4. Re: Problema em Conectar PHP com Oracle

Elder dos Santos Pereira
elderdosantos

(usa Ubuntu)

Enviado em 07/05/2013 - 17:54h

php -i | grep oci

roda isso no console

ou então executa phpinfo(); em qualquer arquivo php

lá você vai procurar por oci8
se não encontrar significa que seu php não está configurado para isso...


5. USE PDO

Paulo
henbran

(usa Debian)

Enviado em 08/05/2013 - 15:10h

cheque se o teu php consta PDO
------------------------------------------------------------------------------------
crie um script
<?php
phpinfo();
?>
salve como phpinfo.php no diretório www e execute no navegador http://localhost/phpinfo.php
na tela que aparecer (meio azulada), pesquise se mostra algo sobre PDO e para qual BD tem driver, se só tiver para mySql, pesquise no google como instalar driver oracle para PDO no teu php (varia de acordo com o sistema operacional)
------------------------------------------------------------------------------------
http://php.net/manual/en/book.pdo.php
------------------------------------------------------------------------------------
depois, como no meu caso, criei uma classe Banco em um arquivo Banco.php
nessa classe criei os métodos/functions
conectar: com a assinatura nomeBanco. Dentro dessa funcion joguei um switch com as eventuais disponíveis conexões.
Também nessa classe coloquei um método sair para desligar a conexão com o BD e, um objeto publico chamado conexao.
------------------------------------------------------------------------------------
================================================================
<?php

class Banco {
public $conexao;
public $msg;

public function __construct() {

}

public function conectar($banco) {
$this->getBanco($banco)
if ($this->conexao) {
try {
$this->con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
$this->msg = "Erro de conexão com o banco de dados: Código: " . $e->getCode() . "Mensagem " . $e->getMessage() . "hora: " . date('H:i:s');
}
} else {
echo "Erro na definição PDO do banco de dados!";
exit;
}
return $this->conexao;
}

private function getBanco($banco) {
try {
switch ($banco) {
case 'meuBancoMySql':
try {
$this->con = new PDO("mysql:host=" . "url do dataserver" . ";dbname=" . "nomeDoBanco", "user", "senha");
} catch (Exception $exc) {
$this->msg = "Erro de coneção com o banco de dados MySql. " . $exc->getTraceAsString();
}
break;
case 'meuBancoPostGreeSql':
$this->con = new PDO("pgsql:dbname={" . "nomeDoBanco" . "};user={" . "user" . "}; password={" . "senha" . "};host=" . "url do dataserver");
break;
case 'meuBancoOracle':
$tns = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" . "url do dataserver" . ")(PORT=1521)))(CONNECT_DATA=(SID=" . "nomeDoBanco" . ")))";
$this->con = new PDO("oci:dbname=" . $tns, "user", "senha", array(PDO::ATTR_PERSISTENT => true));
break;
case 'mssql':
$this->con = new PDO("mssql:host={" . "url do dataserver" . "},1433;dbname={" . "nomeDoBanco" . "}", "user", "senha");
break;
}
} catch (Exception $exc) {
echo $exc->getTraceAsString();
exit;
}
}

}
?>
================================================================


6. Re: Problema em Conectar PHP com Oracle

Josenildo Cardoso
dungamaster

(usa Debian)

Enviado em 02/09/2013 - 17:13h

Verifique se a extensao do php_oci está rodando no apache, caso contrario retire o ";" da frente da linha php_oci8 no php.ini e restart o Apache, eu utilizo o codigo abaixo para conectar ao oracle.

$ora_user = "usuariobd";
$ora_senha = "senhauserbd";

$ora_bd = "(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.0.1.2)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=BANCODEDADOS)
)
)";
if ($ora_conexao = oci_connect($ora_user,$ora_senha,$ora_bd) ) {

}else {
echo "Erro na conexão com o Oracle.";
}






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts