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:
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.
|