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

gojuced7  于 2023-10-23  发布在  Apache
关注(0)|答案(1)|浏览(165)

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

  1. <?php
  2. $host = "host = 127.0.0.1";
  3. $port = "port = 5432";
  4. $dbname = "dbname = DBNAME";
  5. $credentials = "user = USER password = PASS";
  6. $conn = pg_connect( "$host $port $dbname $credentials" );
  7. if(!$conn) {
  8. echo "Error : Unable to open database".PHP_EOL;
  9. } else {
  10. echo "Opened database successfully".PHP_EOL;
  11. }
  12. ?>

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

  1. LoadModule rewrite_module libexec/apache2/mod_rewrite.so

修改:

  1. ServerName localhost
  2. <Directory />
  3. AllowOverride none
  4. Require all denied
  5. </Directory>
  6. <IfModule dir_module>
  7. DirectoryIndex index.php index.html
  8. </IfModule>
  9. DocumentRoot "/Library/WebServer/Documents"
  10. <Directory "/Library/WebServer/Documents">
  11. Options FollowSymLinks Multiviews
  12. MultiviewsMatch Any
  13. AllowOverride All
  14. Require all granted
  15. </Directory>

又道:

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

hs1rzwqc1#

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

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

我以前

  1. $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")连接到数据库,代码与上面相同。

相关问题