NewtonJr.
(usa CentOS)
Enviado em 03/06/2008 - 11:30h
Olá comunidade.
Estou com grandes dificuldades em acessar o postgres através do php.
O código abaixo gera o seguinte erro: Fatal error Call to undefined
function pg_connect()
<?php
$str_conexao = "host=localhost dbname=postgres port=5432
user=postgres password=eletronorte";
$conexao = pg_connect($str_conexao);
if (!$conexao ) {
echo "Não foi possível estabelecer uma conexão com o banco de
dados.";
} else {
echo "Banco conectado com sucesso."
} //*/
?>
<?php
include ('conecta_pg.inc');
pg_close($conexao);
?>
Coloquei o código dl('c:\php5\ext\pgsql.dll') or exit("Impossivel
carregar modulo pgsql"); e obtive o seguinte resultado:
Warning: dl() [function.dl]: Not supported in multithreaded Web
servers - use extension=c:\php5\ext\pgsql.dll in your php.ini in
C:\apache2\htdocs\banco_postgres.php on line 7 Impossivel carregar
modulo pgsql
Depois de pesquisar aqui no fórum e me certificar que o arquivo
php.ini estava configurado para postgres,
digitei o seguinte comando na raiz do php (C:\php5\):
### C:\php5>php.exe -m > log-php-extensoes.txt ### e obtive o
seguinte resultado:
PHP Warning: PHP Startup: Unable to load dynamic
library '.\ext\php_exif.dll
NÒo foi possÝvel encontrar o m¾dulo especificado. in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic
library '.\ext\php_ifx.dll
NÒo foi possÝvel encontrar o m¾dulo especificado. in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic
library '.\ext\php_oci8.dll
NÒo foi possÝvel encontrar o m¾dulo especificado. in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic
library '.\ext\php_pdo_oci.dll
NÒo foi possÝvel encontrar o m¾dulo especificado. in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic
library '.\ext\php_pdo_oci8.dll
NÒo foi possÝvel encontrar o m¾dulo especificado. in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic
library '.\ext\php_pdo_pgsql.dll
NÒo foi possÝvel encontrar o m¾dulo especificado. in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic
library '.\ext\php_pgsql.dll
NÒo foi possÝvel encontrar o m¾dulo especificado. in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic
library '.\ext\php_pspell.dll
NÒo foi possÝvel encontrar o m¾dulo especificado. in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic
library '.\ext\php_sybase_ct.dll
NÒo foi possÝvel encontrar o m¾dulo especificado. in Unknown on line 0
Cannot find module (IP-MIB): At line 0 in (none)
Cannot find module (IF-MIB): At line 0 in (none)
Cannot find module (TCP-MIB): At line 0 in (none)
Cannot find module (UDP-MIB): At line 0 in (none)
Cannot find module (SNMPv2-MIB): At line 0 in (none)
Cannot find module (SNMPv2-SMI): At line 0 in (none)
Cannot find module (UCD-SNMP-MIB): At line 0 in (none)
Cannot find module (UCD-DEMO-MIB): At line 0 in (none)
Cannot find module (SNMP-TARGET-MIB): At line 0 in (none)
Cannot find module (SNMP-VIEW-BASED-ACM-MIB): At line 0 in (none)
Cannot find module (SNMP-COMMUNITY-MIB): At line 0 in (none)
Cannot find module (UCD-DLMOD-MIB): At line 0 in (none)
Cannot find module (SNMP-FRAMEWORK-MIB): At line 0 in (none)
Cannot find module (SNMP-MPD-MIB): At line 0 in (none)
Cannot find module (SNMP-USER-BASED-SM-MIB): At line 0 in (none)
Cannot find module (SNMP-NOTIFICATION-MIB): At line 0 in (none)
Cannot find module (SNMPv2-TM): At line 0 in (none)
[PHP Modules]
bcmath
bz2
calendar
com_dotnet
ctype
curl
date
dba
dbase
dom
fdf
filter
ftp
gd
gettext
gmp
hash
iconv
imap
interbase
json
ldap
libxml
mbstring
mcrypt
mhash
mime_magic
ming
msql
mssql
mysql
mysqli
odbc
openssl
pcre
PDO
PDO_Firebird
pdo_mssql
pdo_mysql
PDO_ODBC
pdo_sqlite
Reflection
session
shmop
SimpleXML
snmp
soap
sockets
SPL
SQLite
standard
tidy
tokenizer
wddx
xml
xmlreader
xmlrpc
xmlwriter
xsl
zip
zlib
[Zend Modules]
Ou seja, 09 dll's não são e/ou não podem ser carregadas (não sei o
por quê, principalmente a php_pgsql.dll que faz o link do php com
postgres)
****Pergunta 1 - Preciso que todas essas extensões possam ser
carregadas, ou pelo menos que as do postgres assim o sejam. Como
fazer isso?
****Pergunta 2 - Quais as diferenças entre as extensões php_pgsql.dll
e php_pdo_pgsql.dll ?
****Pergunta 3 - Como verificar se uma determinada extensão do php
foi carregada (ou não) pelo apache?
****Pergunta 4 - Adicionei as seguintes linhas no arquivo httpd.conf
do apache:
LoadModule php5_module "c:/php5/php5apache2_2.dll"
AddType application/x-httpd-php .php
#PHPIniDir "C:/php5"
PHPIniDir "C:/WINDOWS"
Quando eu tentava executar o meu código acima com a diretiva
PHPIniDir "C:/php5" configurada no httpd.conf (descomentava e única),
simplesmente nenhum resultado aparecia (tela em branco); depois de
pesquisar aqui em alguns comentei a mesma e adicionei
PHPIniDir "C:/WINDOWS" e o erro começou a ser mostrado na tela do
browser. Por que isso acontece? Tenho que fazer mais alguma
configuração no httpd.conf?
Pessoal tentei ser o mais detalhado possível para evitar ter que
enviar detalhes adicionais. Preciso muito colocar isso pra funcionar,
pois estou sem programar há 03 semanas uma vez que não consigo
colocar o APACHE-PHP-POSTGRES para funcionarem juntos em ambiente
Linux e nem ambiente Windows.
Agradeço a atenção e fico no aguardo online.
PS1 - Utilizei o pacote.zip para instalar o php no caminho C:\php5.
PS2 - Já adicionei o caminho C:\php5 ao path do sistema.
PS3 - Já pesquisei no fórum PHP e Banco de dados, porém não obtive
êxito em solucionar meu problema.
Ambiente de Desenvolvimento:
SO - Windowx XP SP2
Servidor - apache 2.2.8
PHP-5.2.6
Postgresql 8.3.1
PHP.ini
[PostgresSQL]
; Allow or prevent persistent links.
pgsql.allow_persistent = On
; Detect broken persistent links always with pg_pconnect().
; Auto reset feature requires a little overheads.
pgsql.auto_reset_persistent = Off
; Maximum number of persistent links. -1 means no limit.
pgsql.max_persistent = -1
; Maximum number of links (persistent+non persistent). -1 means no
limit.
pgsql.max_links = -1
; Ignore PostgreSQL backends Notice message or not.
; Notice message logging require a little overheads.
pgsql.ignore_notice = 0
; Log PostgreSQL backends Noitce message or not.
; Unless pgsql.ignore_notice=0, module cannot log notice message.
pgsql.log_notice = 0
; Windows Extensions
; Note that ODBC support is built in, so no dll is needed for it.
; Note that many DLL files are located in the extensions/ (PHP 4)
ext/ (PHP 5)
; extension folders as well as the separate PECL DLL download (PHP 5).
; Be sure to appropriately set the extension_dir directive.
extension=php_bz2.dll
extension=php_curl.dll
extension=php_dba.dll
extension=php_dbase.dll
extension=php_exif.dll
extension=php_fdf.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_gmp.dll
extension=php_ifx.dll
extension=php_imap.dll
extension=php_interbase.dll
extension=php_ldap.dll
extension=php_mbstring.dll
extension=php_mcrypt.dll
extension=php_mhash.dll
extension=php_mime_magic.dll
extension=php_ming.dll
extension=php_msql.dll
extension=php_mssql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_oci8.dll
extension=php_openssl.dll
extension=php_pdo.dll
extension=php_pdo_firebird.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_oci.dll
extension=php_pdo_oci8.dll
extension=php_pdo_odbc.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
extension=php_pgsql.dll
extension=php_pspell.dll
extension=php_shmop.dll
extension=php_snmp.dll
extension=php_soap.dll
extension=php_sockets.dll
extension=php_sqlite.dll
extension=php_sybase_ct.dll
extension=php_tidy.dll
extension=php_xmlrpc.dll
extension=php_xsl.dll
extension=php_zip.dll