Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ygornet

Erro no script

Recommended Posts

Pessoal, estou tentando acessar um banco Interbase/Firebird em outro servidor, mas me retorna o seguinte erro:

 

Fatal error: Call to undefined function ibase_connect() in /xxx/www/html/xxxxxxxxxx/conexao_firebird.php on line 16

Seria pq no servidor onde roda minha pagina nao tem suporte ao Interbase/Firebird?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria pq no servidor onde roda minha pagina nao tem suporte ao Interbase/Firebird?

Sim.

Você pode tentar habilitar essa extensão em tempo de execução, usando a função dl(), mas alguns servidores a desabilitam, por questões de segurança.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo,

 

seria só eu executar um script com essa função?

 

Informação:

 

O Servidor onde esta o site eh Linux.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem que carregar sempre quando for usar.

Seria ideal fazer isso num arquivo de inicialização de sistema. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

http://br2.php.net/dl

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo ,

ql extensao eu terei que usar?

como vou colocar como arquivo de inicialização se esta no servidor? O servidor raramente reinicia.

 

 

Se puder ajudar fico grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom , pelo que eu intendi eu tenho que criar um script com essa parte de código:

 

if (!extension_loaded('mysql')) {
		if (function_exists('dl') {
			$prefix = (PHP_SHLIB_SUFFIX == 'dll') ? 'php_' : '';
			if (!dl($prefix . 'mysql.' . PHP_SHLIB_SUFFIX)) {
				die("Não foi possível carregar a extensão MySQL.");
			}
		}
	}

Acima esta só verificando se a função mysql esta carregada , como faria pra verificar a interbase/ firebird?

 

Oq eu usaria no lugar de 'mysql'? Qual seria o nome correto?

 

Depois eu teria qeu fazer um include desse script na pagina onde tento carregar o BD?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz o seguinte:

 

Criei a pagina banco.php

 

<?php
if (!extension_loaded('ibase')) {
		if (function_exists('dl')) {
			$prefix = (PHP_SHLIB_SUFFIX == 'dll') ? 'php_' : '';
			if (!dl($prefix . 'ibase.' . PHP_SHLIB_SUFFIX)) {
				die("Não foi possível carregar a extensão ibase.");
			}
		}
	}
?>

Na pagina onde eu chamo a conexão com o banco eu inseri a seguinte linha antes de chamar o banco:

 

include "banco.php";

Mas me retornou o seguinte erro:

 

Warning: dl() [function.dl]: Unable to load dynamic library '/usr/lib/php/modules/ibase.so' - /usr/lib/php/modules/ibase.so: cannot open shared object file: No such file or directory in /var/www/html/xxxxxxxxxxxx/banco.php on line 13

Não foi possível carregar a extensão ibase.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ibase.so não foi encontrado. Ou seja, esse arquivo não está no diretório de extensões.

Portanto, use outro SGBG ou troque de servidor.

 

Dá para tentar entrar em contato com o suporte e ver se eles podem habilitar a extensão, mas não espero muita coisa. :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Joguei o arquivo ibase.so pro diretorio do servidor.

 

Agora me retorna outro erro:

 

Warning: dl() [function.dl]: Unable to load dynamic library '/usr/lib/php/modules/ibase.so' - /usr/lib/libstdc++.so.5: version `GLIBCPP_3.2' not found (required by /usr/lib/libgds.so) in /var/www/html/rastreamento_de_produto/banco.php on line 13

Não foi possível carregar a extensão ibase.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tenho acesso a maquina servidor onde fica o site.

Ja fui no diretório das extensões e já joguei ibase.php pra la.

Só que agora da outro erro.

 

Parece qeu pede o arquivo: Joguei o arquivo ibase.so pro diretorio do servidor.

 

libstdc++.so.5

 

Mas só tem o libstdc++.so.6, ou seja , uma versao acima , mas parece que nao esta aceitando e eu nao acho a ersao qeu esta pedindo pra baixar e substituir no diertorio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se voc6e tem acesso aos arquivos de configuração, esqueça a função dl(). Habilite essa extensão no próprio php.ini.

 

No diretório das extensões, não coloque ibase.php, coloque o ibase.so.

 

 

OBS: Estou vendo aqui, e parece que é interbase.so.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas no php.ini nao tem como inserir essa linha, lembrando que o servidor é Linux.

Entao no php.ini do Linux tem uma linha que chama rpaum diretorio onde tem as bibliotecas q da suporte ao php.

Se eu acrescento "ibase.php" nao da em nada, pois o mysql funciona normalmente mas nao tem linha nenhuma no php ini citanto ele(mysql)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Procure por esta linha no php.ini:

 

;extension=php_interbase..so

 

retire o ponto-e-vírgula inicial, reinicie o Apache e tente de novo. ibase.php não é um arquivo de configuração. Você que o criou? qual é o conteúdo dele?

Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpa , onde eu disse ibase.php intenda como ibase.so.

o arquivo ibase.so eu achei na internet, mas na verdade achei com o nome de interbase.so renomeei e passei pro servidor como ibase.so.

 

No arquivo php.ini nao tem a linha

 

;extension=php_interbase..so

 

eh servidor Linux nao eh configurado com essa linha. Nao eh como o windows.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.