Simplicity
Principal
Início
- - - - - - -
Programação
Administração
Modelagem
Projeto
Práticas
Scripts
Módulos Completos
- - - - - - -
Documentação
Dicas
Colaborações
Links
Ferramentas
- - - - - - -
Trabalho
Busca
Forum
Diversos
Contato
Sobre Min
Livro de Visitas
PG - RSS
feed image
 
Instalando a Linguagem Procedural PL/PHP no PostgreSQL PDF Imprimir E-mail
Por Ribamar FS   
17 de July de 2008

Instalando a Linguagem Procedural PL/PHP no PostgreSQL  

Observações iniciais

Como eu trabalho com a linguagem PHP e o PostgreSQL, então fica bem mais produtivo criar funções na linguagem PHP. Esta linguagem procedural (PLPHP) para o PostgreSQL ainda não é muito popular e me deu um pouco de trabalho para instalar. Como existe muita gente que programa em PHP este tutorial poderá ser útil a outros.

Também, como precisa que compilemos o PHP juntamente com ela, sua instalação em ambiente Windows ainda não é coisa simples.

Meu ambiente:

  • Linux Ubuntu 8.04

  • PostgreSQL 8.3 (instalado pelos repositórios)

  • plphp 1.3.3


Obs.: Não há necessidade de se instalar o Apache nem mesmo a instalação do PHP irá interferir em outro PHP que exista na máquina.

Requisitos:
- PostgreSQL-8.1 ou superior (para a versão 1.32 ou superior da plphp)
- PHP-5 ou superior

1) Instalação do PostgreSQL

Caso tenha instalado PostgreSQL pelos repositórios instale também o pacote server-dev:

sudo apt-get install postgresql-server-dev-8.3

Caso tenha instalado dos fontes deve ter os binários no path.

Obs.: Para instalar o pg_config, instale o pacote: sudo apt-get install libpq-dev



2) Instalar PHP

Fontes do PHP 5: http://www.php.net/downloads.php

 

Antes instale a biblioteca libxml2-dev:

sudo apt-get install libxml2-dev

 

Acessar o diretório onde descompactou o php, pelo terminal e executar:

sudo ./configure --prefix=/usr/local/plphp --enable-embed

sudo make

sudo make install

Obs.: Após a instalação do PHP recebemos uma mensagem:

You may want to add: /usr/local/plphp/lib/php to your php.ini include_path

 

3) Instalar a plphp:

Acesse o diretório onde descompactou e execute:

sudo ./configure --with-php=/usr/local/plphp

sudo make

sudo make install

Sempre que precisar usar o configure novamente, antes execute "make clean"

 

No caso de ter compilado o PostgreSQL use:

./configure --with-php=/usr/local/plphp --with-postgres=/path/do/postgres

 

4) Instalar a linguagem plphp num banco do PostgreSQL

Acesse o PostgreSQL como super-usuário.

Criar link simbólico para a biblioteca libphp5.so em $(pg_config --libdir)


sudo updatedb

locate libphp5.so (como aqui está em /usr/local/plphp/lib/libphp5.so):

sudo ln -sf /usr/local/plphp/lib/libphp5.so $(pg_config --libdir)

Para a versão versão 8.3 use:

Acesse o SGBD com o PGAdmin ou outro cliente e execute, como super-usuário:

INSERT INTO pg_pltemplate VALUES

('plphp', 't','t','plphp_call_handler', 'plphp_validator', '$libdir/plphp', NULL);

 

INSERT INTO pg_pltemplate VALUES

('plphpu', 'f', 'f','plphp_call_handler', 'plphp_validator', '$libdir/plphp', NULL);

 

Na documentação oficial a recomendação que existe é apenas para a versão 8.2.

Na versão 8.3 esta tabela de sistema passou a ter mais um campo, então adicionei.

 

5) Testando:

Crie um novo banco e acesse o banco criado:

 create language plphp;

Então crie suas funções.

 CREATE FUNCTION teste(integer) RETURNS integer AS $$

$r = 0;

for($x=0;$x<3;$x++){

$r +=$args[0];

}

return $r;

$$ STRICT LANGUAGE 'plphp';

select teste(5);

Referências:

Muito obrigado ao Agras Zeta Atino que elaborou este howto:

http://blog.santiago.zarate.net.ve/archives/1-Como-instalar-plphp-en-ubuntu-7.04-y-7.10

 

Site oficial - https://projects.commandprompt.com/public/plphp/wiki

http://www.commandprompt.com/community/plphp/

Documentação - https://projects.commandprompt.com/public/plphp/wiki/Documentation

Download - https://projects.commandprompt.com/public/plphp/wiki/Downloads

Tutorial - http://www.google.com.br/url?sa=t&ct=res&cd=1&url=http%3A%2F%2Fpeople.planetpostgresql.org%2Fxzilla%2Fuploads%2Fplphp-public.odp&ei=SZN-SKboEYi28ASS8vGnDQ&usg=AFQjCNG7WFmnIpHAfWqjEYDsrParowLfAg&sig2=fha31FEuhk9WcVJzGgy8vw

 

Na versão 8.2 ao tentar criar a linguagem recebo o erro:

ERROR: could not access file "$libdir/plphp": Arquivo ou diretório inexistente

Sugestões serão bem-vindas, tanto para corrigir a ortografia quanto o conteúdo.

Comentários
Adicionar Pesquisar
William Leite Araújo   |201.80.209.xxx |2008-07-18 11:29:21
O problema mais provável com não encontrar a biblioteca no 8.2 é que (suponho
que esteja usando ambas versões, como eu) é que o comando que criou para fazer o
link simbólico não criou o mesmo no diretório correto. O pg_config executado
deve ser da distribuição 8.3, e provavelmente as compilações que fez também.
Assim, mesmo que ele encontre o "plphp.so", será provavelmente
impossível usar no 8.2.
Ribamar FS  - re: PL/PHP     |201.9.74.xxx |2008-08-05 22:38:48
William Leite Araújo escreveu:
O problema mais provável com não encontrar a biblioteca no 8.2 é que
(suponho que esteja usando ambas versões, como eu) é que o comando que
criou para fazer o link simbólico não criou o mesmo no diretório
correto. O pg_config executado deve ser da distribuição 8.3, e
provavelmente as compilações que fez também. Assim, mesmo que
ele encontre o "plphp.so", será provavelmente impossível usar
no 8.2.


Realmente, depois eu desinstalei tudo e deixei somente o 8.2, mas não
funcionou.
Então removi e deixei somente o 8.3 e então funcionou legal.
Escrever comentário
Nome:
Email:
 
Website:
Título:
UBBCode:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Please input the anti-spam code that you can read in the image.

3.25 Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

Última Atualização ( 18 de July de 2008 )
 
< Anterior   Próximo >
© 2008 PostgreSQL - Curso Online
Joomla! is Free Software released under the GNU/GPL License.
Design by DeiseHost.Com