PostgreSQL不通过PHP连接到Apache,但可以通过MacOS 13 Ventura上的命令行访问

gojuced7  于 12个月前  发布在  Apache
关注(0)|答案(1)|浏览(98)

在MacOS 13 Ventura上,我安装了PHP 8.2.10和PostgreSQL 16(来自Postgres.app),并创建了一个数据库,我可以通过命令行毫无问题地查询。我还在网络浏览器(Firefox和Safari)中正确获取了phpinfo()功能的网页。然而,当我想通过web浏览器和PHP脚本查询数据库时,我得到一个超时错误:“加载页面时,与服务器的连接已重置."。我该如何解决这个问题?
下面是PHP脚本:

<?php
$host        = "host = 127.0.0.1";
$port        = "port = 5432";
$dbname      = "dbname = DBNAME";
$credentials = "user = USER password = PASS";

$conn = pg_connect( "$host $port $dbname $credentials"  );
if(!$conn) {
  echo "Error : Unable to open database".PHP_EOL;
} else {
  echo "Opened database successfully".PHP_EOL;
}

?>

对Apache httpd.conf的修改如下:
未评论:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

修改:

ServerName localhost

<Directory />
    AllowOverride none
    Require all denied
</Directory>

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
    Options FollowSymLinks Multiviews
    MultiviewsMatch Any
    AllowOverride All
    Require all granted
</Directory>

又道:

#PHP
PHPIniDir "/usr/local/etc/php/8.2/php.ini"
LoadModule php_module /usr/local/opt/php/lib/httpd/modules/libphp.so "Vlad Atanasiu Myself"
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
hs1rzwqc

hs1rzwqc1#

我通过从pg_connect()函数中省略主机和端口来解决这个问题。所以与其

$conn = pg_connect( "$host $port $dbname $credentials" );

我以前

$conn = pg_connect( "$dbname $credentials" );

我仍然想知道为什么会发生这个问题。

**PS:**上述行为似乎取决于配置。例如,在MacOS 10.15.7 Catalina 、PHP 7.3.29(预装在MacOS上)和PostgreSQL 15(来自Postgres.app)上,您需要使用pg_connect("$host $port $dbname $credentials")连接到数据库,代码与上面相同。

相关问题