在 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>
我通过从 pg_connect() 函数中省略主机和端口解决了这个问题。所以,而不是
$conn = pg_connect( "$host $port $dbname $credentials" );
我用过
$conn = pg_connect( "$dbname $credentials" );
我还是想知道为什么会出现这个问题。