【问题标题】:Cant connect to Postgres from php ->Call to undefined function pg_connect()无法从 php 连接到 Postgres -> 调用未定义的函数 pg_connect()
【发布时间】:2013-03-21 06:43:24
【问题描述】:

我在预览帖子中发布这个问题作为答案对我没有帮助。 我正在尝试从我的本地计算机连接到位于远程服务器上的 DB postgres。 我正在使用 Xampp 和 Netbeans IDE。

下面是我要运行的代码:

        //attempt a connection
    $dbh = pg_connect("host=server_name port=5432 dbname=prototype1 user=leonidz password=****");
    if (!$dbh) {
    die("Error in connection: " . pg_last_error());
               }

这是错误信息:

Fatal error: Call to undefined function pg_connect() in C:\xampp\htdocs\PhpProject1\index.php on line 10

在 php.ini 中我未提交: extension=php_pgsql.dll 和 extension=php_pdo_pgsql.dll

我还映射了 extension_dir = "C:\xampp\php\ext\" 并在更改后重新启动 Apache 服务器。

我不知道我还能做什么,请帮忙。

【问题讨论】:

  • PHP 信息告诉你加载的扩展是什么?重启时apache日志给你什么错误?
  • 我在 Apache 错误日志中有任何错误,PHP 警告:PHP 启动:无法加载动态库 'C:\\xampp\\php\\ext\\php_pdo_pgsql.dll' - 指定找不到模块。\r\n 在第 0 行的未知中,当我尝试运行函数以连接到我得到的数据库时:PHP 致命错误:调用 C:\\xampp\\ 中的未定义函数 pg_connect() htdocs\\PhpProject1\\index.php 第 10 行 PHP INFO:当我尝试在 php info 中查找“pgsql”字符串时没有结果
  • 您使用的是什么操作系统?是Linux还是Windows环境?你用的是什么版本,x86还是x64?您编辑了哪个 php.ini?请记住它来自 xampp/apache/bin/ 希望您回答我所有的问题,以便我们可以更好地帮助您。干杯
  • 通过将 xampp 版本降级到 v3.1.0 解决的问题

标签: php apache xampp


【解决方案1】:

在 C:\xampp\php\php.ini 中,取消注释这些:

extension=php_pdo_pgsql.dll
extension=php_pgsql.dll

完成此操作后需要重新启动您的 xampp

【讨论】:

  • 工作就像一个魅力。
  • 我也面临同样的问题,但在 php.ini 文件中找不到上述行。
  • 谢谢!我能够在 5 分钟内配置 xampp 以学习其他 10 分钟 PostgreSQL .. 但请记住:在 php 7 php.ini 中有第 905-extension=pdo_pgsql 和第 907-extension=pgsql
  • 我使用的是 xampp 5.6.38,它在第 5 行。 908 和 910。但是为什么这些行是默认注释的呢?
  • AND extension="pgsql.so" 以防在 linux 上运行 xampp
【解决方案2】:

在 php.ini 中你需要取消注释

extension=php_pdo_pgsql.dll

extension=php_pgsql.dll

extension="pgsql.so"

【讨论】:

    【解决方案3】:

    转到 PHP dir oepn php.ini 文件,在那里你会找到这两行,只需从左侧删除分号,保存文件。接下来,停止您的 xampp 服务器并再次重新启动它会正常工作

    ;extension=pdo_pgsql
    ;extension=pgsql
    

    【讨论】:

      【解决方案4】:

      Fatal error: Uncaught Error: Call to undefined function pg_connect() in C:\xampp\htdocs\postgresql_dbcon\connection1.php:5 Stack trace: #0 C:\xampp\htdocs\postgresql_dbcon\view.php(4): include() #1 {main} thrown in C:\xampp\htdocs\postgresql_dbcon\connection1.php on line 5

      connection1.php 文件

      <?php
          $db = pg_connect("host=localhost port=5432 dbname=db_test user=postgres password=123abc");//line 5
          if($db){
              echo "Connected\n";
          } else {
              echo "Error NotConnected\n";
          }
      ?>
      

      查看.php文件

      <?php include "connection1.php";?>
      <?php 
          $query = 'Select * FROM table2';
          $result = pg_query($db, $query);
          if (!$result) {
        echo "An error occurred.\n";
        exit;
      }
      while ($row = pg_fetch_row($result)) {
        $dbdata[]=$row;
      }
      $myJSON = json_encode($dbdata);
          echo $myJSON;
      ?>
      

      如果您在 Windows 操作系统中使用 XAMPP,请转到安装 XAMPP 的目录。按照路径,即 xampp/php/php.ini 。在编辑器中打开php.ini 文件并搜索";extension=pdo_mysql" 并将其替换为"extension=pdo_mysql" 并将";extension=pdo_pgsql" 替换为"extension=pdo_mysql"。然后保存文件并重新启动 XAMPP。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-02
        • 2013-09-25
        • 2011-03-29
        • 2013-01-28
        • 1970-01-01
        • 2017-02-21
        相关资源
        最近更新 更多