PHP acessando Oracle no Ubuntu Server 6.06


Infelizmente o php que vem no Ubuntu não oferece suporte ao Oracle.
Este guia mostra como instalar o php direto dos fontes para que ele consiga conectar-se a este banco de dados.

Pré-Requisito

Passo 0 (zero): É necessário um cliente oracle instalado na máquina. Caso ainda não tenha um e queira instalar um [levíssimo] cliente, acesse este post. Feito isso, siga essas etapas:

Instalação

  1. Instale o apache e outros pacotes necessários: – e os milhares de dependências 🙂

    sudo apt-get install apache2 apache2-threaded-dev flex bison libxml2-dev gcc g++ make autoconf automake libtool

  2. Baixe o [fonte do] php em http://www.php.net/downloads.php

    Descompactar em alguma pasta, no meu caso: /home/wendell/php-5.1.4
  3. Compile o php:

    cd /home/wendell/php-5.1.4
    ./configure \
    –with-apxs2=/usr/bin/apxs2 \
    –with-oci8=instantclient,/usr/lib/instantclient \
    –with-config-file-path=/etc/php5 \
    –prefix=/usr/lib/php

    make
    sudo make install
    sudo mkdir /etc/php5
    sudo cp php.ini-dist /etc/php5

  4. Adicione ou descomente a linha abaixo do /etc/apache2/apache2.conf:

    AddType application/x-httpd-php .php

  5. Reinicie o apache:

    sudo /etc/init.d/apache2 restart

Pronto. Agora é só testar!

Crie um arquivo vazio com o seguinte conteúdo:

phpinfo();
?>

E salve-o na pasta padrão do apache – /var/www – com o nome info.php.
Abra o browser e visite: http://maquina/info.php

Se tudo deu certo, deve haver uma seção OCI8 indicando as propriedades da extensão Oracle.

Até a próxima!

Fiquem a vontade para tirar dúvidas. Usem a área de comentários ou entrem em contato diretamente: wendell_listas@bani.com.br

12 thoughts on “PHP acessando Oracle no Ubuntu Server 6.06”

  1. Oi Wendell
    eu não uso Oracle mas acho que o que você fez acima pode ser simplificado no Ubuntu. Se você tiver os deb-src no seu /etc/apt/sources.list, você poderia fazer:
    apt-get build-dep php5
    apt-get source php5
    descompactar o arquivo tar.gz e editar o debian/rules para incluir as opções de compilação que você passou. Depois é só dar o debuild -us -uc no diretório do php5 e recriar o pacote.

    []s

  2. Wendell!!
    Muito bom o seu post, mais eu preciso de mais uma informação!
    Bem eu baixei o Cliente Oracle, la do Site da Oracle!!!
    E criei uma pasta /urs/local/oracle/, onde eta todo o cliente, porem na hora da instalação nao deu alguns erros. Porem a pasta instantclient, existe eu poderia pontar o PHP prar esta pasta? /usr/local/oracle/instantclient/ ?
    Valeu!!!

  3. Olá.

    Você disse que na hora da instalação do PHP NÃO deu erros? Então tá tudo certo né?

    Com relação a usar o instantclient ao invés do cliente normal, não vejo problema nisso. Até porquê você pode ter vários clientes instalados na mesma máquina, por exemplo: 9i e 10g. Na hora de compilar o PHP você diz qual cliente ele deve usar.

    Qualquer dúvida, pode entrar em contato via msn (jonhwendell@hotmail.com) ou google talk (jonh.wendell@gmail.com)

    Ajudarei no que for capaz.

    Abraços!

  4. Ola amigos,

    Gostaria de informar aos que receberem o erro “Oracle-OCI8 needed libraries not found” na compilacao do PHP. Que para solucionar este proble basta trocar o seguinte paramentro na compilacao do PHP.

    troque este: –with-oci8=instant_client,/usr/lib/instantclient
    por este: -with-oci8-instant-client/usr/lib/instantclient

    Qualquer coisa entrem em contato (murilogoulart@gmail.com).

    Obrigado ao criador deste howto, Foi de grande ajuda.

  5. Wendel,

    Eu fiz os seguintes passos:
    $ pecl install oci8

    Informei “instant_client,/usr/lib/instantclient” quando pediu o caminho das libs do Oracle.

    Depois, editei o php.ini e incluí a linha abaixo no final do arquivo:
    extension=oci8.so

    Ainda não testei, mas já aparece tudo certo no phpinfo()

  6. quando tento compilar da essa mensagem de erro o que faço?
    configure: warning: –with-apxs2=/usr/bin/apxs2: invalid host type
    configure: warning: –with-oci8=instantclient,/usr/lib/instantclient: invalid host type
    configure: error: can only configure for one host and one target at a time

  7. Wendel,

    Baixei o InstantClieente, instalei conforme voce recomendou e compilei o php5. Beleza sem problemas.

    Criei o info.php e coloquei no /var/www. Porem quando chamo o firefox no endereco hhtp://localhost/info.php em vez de executar o script php ele aparece a tela de downlod do info.php.

    Esta faltando alguma configuração que eu esqueci de fazer ?

    Grato,
    Helder

  8. Boa tarde Wendel, parabens pelo Blog, muito bom ver nossos conterrâneos com esse nível em Linux, porém tive um probleminha com relacao à compilacao do php.
    Quando fui dar o make ele gerou o seguinte erro abaixo:

    /usr/bin/ld: skipping incompatible /usr/lib/instantclient/libclntsh.so when searching for -lclntsh
    /usr/bin/ld: cannot find -lclntsh
    collect2: ld returned 1 exit status
    make: *** [libphp5.la] Error 1

    Não consegui resolvê-lo, por isso peço sua ajuda, um abraço.

  9. Já pensou que Mudar Pode Ser Bom?

    A Viacorp Saúde é uma empresa de Consultoria de Benefícios com mais de 20 anos de experiência no seguimento de benefício saúde e odontológico, possuindo parceria com as principais seguradoras, medicinas de grupo e cooperativa (SulAmérica Seguros,Bradesco Seguros,Allianz,Unimed Seguros,NotreDame Seguros e Grupo Amil.

    – Plano de Saúde Caro?

    – Buscando Descontos?

    – Planos Para Pequenas e Médias Empresas?

    – Administração de Planos Empresariais?

    Temos soluções para todas essas questões e desta forma, queremos ter a oportunidade de apresentar nossos serviços e auxiliar no que for necessário para sua empresa.

    Atenciosamente.

    Carlos Alberto
    Gerente Corporativo
    Viacorp Saúde

Comments are closed.