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

问题描述 投票:0回答:1

在 MacOS 13 Ventura 上,我从 Postgres.app 安装了 PHP 8.2.10 和 PostgreSQL 16,并创建了一个数据库,我可以通过命令行毫无问题地查询该数据库。我还正确获取了网络浏览器(Firefox 和 Safari)中

phpinfo()
功能的网页。但是,当我想通过网络浏览器和 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>
apache macos-ventura php-8.2 postgresql-16
1个回答
0
投票

我通过从 pg_connect() 函数中省略主机和端口解决了这个问题。所以,而不是

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

我用过

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

我还是想知道为什么会出现这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.