Pular para o conteúdo

Problema em Conectar PHP com Oracle

Responder tópico
  • Denunciar
  • Indicar

1. Problema em Conectar PHP com Oracle

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.

Responder tópico

2. Driver

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

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

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

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

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.";
}

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder