Pergunta

Atualização (21/05/2010) Sucesso!

Então, depois de muito $ Head-> Desk () 'Ing, eu resolvi.

Lembre -se de crianças, tenha cuidado com a versão instantânea do cliente que você usa, dependendo das configurações de virtualização!

Eu estava instalando o cliente instantâneo genérico (sem cientes de que nossos servidores ESX estão nos processadores da AMD, não à Intel) e que funcionavam bem internamente (a instalação do CentOS era de 32 bits, pois nossos servidores esxi internos não são de 64 bits). Bem, para que você tenha uma instalação de 32 bits em execução em um servidor virtualizado que está em um AMD64, ainda importa qual cliente instantâneo você instala.

Foi a última coisa que pensei em verificar, mas como parece, tudo está funcionando bem agora.

Gostaria de agradecer a todos que me ajudaram a percorrer todos os testes possíveis para descobrir isso, mas no final, foi minha culpa por não perceber as diferenças nas virtualizações.


Atualização (21/5/2010)Eu pensei que esse bug havia me escapado quando o instalei em uma nova VM internamente, mas agora encontrei um link estreito.

Eu estava tentando instalar isso em nosso servidor de produção quando publiquei isso. Após uma semana sem progresso e necessidade de voltar ao desenvolvimento, equipei uma VM em nosso servidor interno com uma nova instalação de porcaria ... CentOS e novas instalações do Instant Client e OCI8.

Funcionou perfeitamente.

No entanto, acabamos de enviar uma cópia exata da VM para nossos servidores de produção e magicamente não funciona mais. Tentei reinstalar tudo, sem sucesso.

Portanto, as únicas coisas que eu poderia reduzi -lo é um problema de firewall (embora eu tenha o mesmo problema ao tentar 127.0.0.1) ou possivelmente um problema do servidor ESX (nossos servidores de produção), os servidores internos estão executando o ESXi.

Alguma ideia?

Atualização (8/3/2010) Eu instalei o Xdebug e o traçando meu código. Esta é a saída que estou recebendo:

TRACE START [2010-03-08 17:53:05]
    0.2090     327864   -> {main}() /data/aims3/http/octest.php:0
    0.2091     327988     -> ini_set(string(14), string(1)) /data/aims3/http/octest.php:3
    0.2093     327920     -> error_reporting(long) /data/aims3/http/octest.php:4
    0.2094     328048     -> oci_connect(string(8), string(8), string(25)) /data/aims3/http/octest.php:6

O traço pára nesse ponto.

Eu instalei tudo da mesma maneira em um servidor local e funciona bem. Dizer que estou com uma perda completa seria colocá -la de ânimo leve.


*NOTA: Eu executei o teste e ele retornou a falha em todos os testes. Eu nunca corri isso na minha máquina de trabalho para ver se ela relata os mesmos erros. Alguma ideia de que fazer o teste do relatório falharia, mas cometeria nenhum erro?

Eu instalei o Oracle InstantClient sem erros relatados junto com o pacote OCI8 PECL e perdido. Sempre que tento abrir uma conexão com o OCI_Connect, ele interrompe todo o script PHP.

EXEMPLO:

<?php
ini_set ("display_errors", "1");
error_reporting(E_ALL);
echo "before";
$conn = oci_connect("username", "password", "host");
echo "after";
?>

Retorna uma página em branco completa. O módulo é carregado (visto em phpinfo) e tudo instalado sem erros.

Estou com uma perda completa.

CENTOS: 5.4

Apache: 2.2.3

PHP: 5.3.1

InstantClient: 11.2

OCI8: 1.4.1

Alguma ideia?

NOTAS

Relatórios de log de erros apache nada

Tentativa de depuração:

1:

<?php
ini_set ("display_errors", "1");
error_reporting(E_ALL);
echo "before";
if(!function_exists('oci_connect')) die('Oracle Not Installed');
echo "after";
?>

Retornos:

beforeafter

2:

Mudando o host para // host

Retornos:

Mesmo erro

Foi útil?

Solução 5

Foi consertado. Veja o topo para obter detalhes, mas aqui estão as notas do penhasco: os ambientes de virtualização são importantes.

Outras dicas

Existe alguma coisa no error_log do Apache? Isso é mod_php ou fastcgi ou php normal? O que acontece se você executar o script através da linha de comando?

Você também pode tentar definir Log de erros do PHP e olhando lá.


Edit1: Tentar:

echo "before";
if(!function_exists('oci_connect')) die('Oracle Not Installed');

E postar os resultados ...


Edit2: realmente não tenho certeza. Minha melhor aposta é esta informação de o manual do PHP:

O problema mais comum com a instalação do OCI8 não está tendo o ambiente Oracle definido corretamente. Isso normalmente aparece como um problema usando OCI_CONNECT () ou OCI_PCONNECT (). O erro pode ser um erro PHP, como a Call to Função indefinida OCI_CONNECT (), um erro do Oracle como ORA-12705 ou mesmo um acidente do Apache. Verifique os arquivos de log do Apache para erros de inicialização e consulte as seções acima para resolver esse problema.

Alguém mais tem alguma idéia para ajudar Bryan?

Bryan,

Vou ser honesto: tentei isso há dois anos e falhei miseravelmente. :) Não consegui fazer com que as funções da OCI funcionem para qualquer coisa compilando -me.

Mas, no interesse de fazê -lo, procurei uma solução alternativa e a encontrei no Zend Core for Oracle. Tudo o que fiz foi baixar, executar o instalador e isso foi feito. Ele instala Apache/PHP, MySQL (opcional) e o instantclient para você.

Agora, como Zend Server, é basicamente o mesmo produto. Percebo que essa pode não ser a solução que você esperava, mas se funcionar ...

Zend Server

Você está se conectando ao remoto ou ao banco de dados local? Eu acho que, para localhost, você deve substituir "host" por "false". Eu espero que isso te ajude...

EDIT: Eu acho que você está perdendo um parâmetro ... minhas últimas sugestões são: 1. Você deve definir a porta (padrão 1521) e/ou 2. Você deve entrar no nome do db e/ou definir o nome da instância (o nome Parâmetro oracle_sid)

Você nunca verifica o valor de retorno de OCI_Connect () ou ligue para OCI_ERROR (), mas ele não parece relevante para o seu problema, pois você parece estar sofrendo de um acidente PHP. Há um bug aberto para Rhel que também pode afetá -lo:

http://pecl.php.net/bugs/bug.php?id=16626

Você conseguiu o pacote OCI8? Você está usando um binário de terceiros?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top