Неустранимая ошибка: вызов неопределенной функции pg_connect ()

Я пытаюсь подключиться к моей базе данных (удаленный сервер), в которой установлен PostgreSQL. Мой PHP-код пытается подключиться к базе данных с помощью pg_connect (), но я получаю сообщение об ошибке: «Неустранимая ошибка: вызов неопределенной функции pg_connect () в /var/www/website/functions.php в строке 82».

Строка 82 просто:

$db = pg_connect($conn_string); where $conn_string = "host=".$hostname." port=5432 dbname=".$dbname." user=".$db_user." password=".$db_password."" 

(все переменные, определенные ранее)

Я проверил множество форумов, и единственным решением было найти файл php.ini, содержащий строку: – extension = pgsql.so (для UNIX) и extension = php_pgsql.dll (для Windows).

Это утверждение должно быть прокомментировано, и решение состоит в том, чтобы раскомментировать его. Я пробовал, но не меняю ситуацию. На удаленном сервере установлена ​​версия позже установленной версии PostgreSQL v9.0.4. Затем я установил PostgreSQL v8.4.8 на свой ноутбук и запустил сайт локально с помощью MAMP. Сначала Apache разбился по какой-то нечетной причине, я исправил эту проблему, но опять-таки я оказался с той же ошибкой, что и раньше. Fatal error: Call to undefined function pg_connect () ….

Я также запускал phpinfo() и он показал, что версия php поддерживает модуль PostgreSQL. Я потратил целый день на поиск решения, но не увенчался успехом. Это мой первый проект по разработке веб-сайта, и я не в курсе. Любую любезную помощь будет высоко оценена.

phpinfo () дает мне огромный список вещей на терминале, но списки, относящиеся к PostgreSQL, следующие: –

 pdo_pgsql PDO Driver for PostgreSQL => enabled PostgreSQL(libpq) Version => 9.0.4 Module version => 1.0.2 Revision => $Id: pdo_pgsql.c 306939 2011-01-01 02:19:59Z felipe $ pgsql PostgreSQL Support => enabled PostgreSQL(libpq) Version => 9.0.4 Multibyte character support => enabled SSL support => enabled Active Persistent Links => 0 Active Links => 0 Directive => Local Value => Master Value pgsql.allow_persistent => On => On pgsql.auto_reset_persistent => Off => Off pgsql.ignore_notice => Off => Off pgsql.log_notice => Off => Off pgsql.max_links => Unlimited => Unlimited pgsql.max_persistent => Unlimited => Unlimited 

Я перезапустил MAMP после каждого редактирования, который я сделал, так как он упоминался в каждом опубликованном мной сообщении. Я считаю, что сбрасывает как Apache, так и php.

«pqsql.so» (эквивалент UNIX «php_pqsql.dll» в Windows) присутствует в каталоге «extension». Я также скопировал файл «pqsql.so» в каталог Apache / bin, но он не дал мне никаких изменений.

Я не запускаю php в командной строке в первую очередь. Мне просто было интересно узнать, что phpinfo () даст мне отношение к pgsql, о котором я упомянул в своем ответе выше.

Я все еще работаю над инструментами, которые вы упомянули, и ответит, как только получаю какие-либо результаты.

Спасибо, H

Related of "Неустранимая ошибка: вызов неопределенной функции pg_connect ()"

Вам нужно установить пакет php-pgsql или все, что он вызывает для вашей платформы. Который я не думаю, что вы сказали кстати.

На Ubuntu и Debian:

 sudo apt-get install php5-pgsql 
 Easy install for ubuntu: Just run, > sudo apt-get install php5-pgsql then > sudo service apache2 restart //restart apache 

или

 Uncomment the following in php.ini by removing the ";" ;extension=php_pgsql.dll then restart apache 

Изменить . Я просто заметил, что вы упоминаете МАМП. Мой совет для Windows, но может быть полезен, если вы знаете, какие соответствующие инструменты использовать.

Что нужно попробовать :

  • Вы перезапустили PHP и Apache с момента редактирования php.ini?

  • Является ли php_pgsql.dll в вашем каталоге php \ ext?

  • Вы используете php в качестве модуля? Если да, попробуйте скопировать файл php_pgsql.dll в каталог Apache \ bin.

  • Вы используете PHP из командной строки с флагом, определяющим другой файл php.ini?

  • Вы можете попробовать использовать такой инструмент, как Sysinternals 'Filemon, чтобы посмотреть, какие файлы пытаются получить доступ при запуске PHP.

  • Вы можете попробовать использовать такой инструмент, как Dependency Walker, для поиска зависимостей для DLL postgreSQL, если у вас есть недостающая зависимость. Быстрый поиск привел ldd для Unix.

  1. Добавьте «PHPIniDir» C: / php «в» файл httpd.conf (если у вас есть ваш PHP, сохраненный в C :, или укажите место, где сохраняется PHP).
  2. Раскомментировать следующий «extension = php_pgsql.dll» в файле php.ini
  3. Uncomment '; extension_dir = "ext" в каталоге php.ini

Неустранимая ошибка: вызов неопределенной функции pg_connect () …

У меня была эта ошибка, когда я устанавливал Lampp или xampp в Archlinux,

Решение было отредактировано php.ini, оно расположено в /opt/lampp/etc/php.ini

затем найдите эту строку и раскомментируйте

расширение = "pgsql.so"

затем перезапустите сервер apache с помощью xampp и проверьте …

Удачи

У меня также была проблема с OSX. Решение было раскомментировано extension = pgsql.so в php.ini.default и удаление суффикса .default , так как файла php.ini не было.

Если вы используете XAMPP, файл php.ini находится в / XAMPP / xampfiles / etc.

У меня был тот же симптом в win7. Я получил этот скрипт:

 <?php phpinfo(); pg_connect("blah"); 

Когда я выполнил скрипт phpinfo.php через apache ( http: //localhost/phpinfo.php ), я получил сообщение об ошибке: Позвоните в неопределенную функцию pg_connect () в …

Когда я выполнил тот же скрипт из командной строки (php phpinfo.php), я получил ожидаемое сообщение: PHP Warning: pg_connect (): Не удается подключиться к серверу PostgreSQL: отсутствует «=» после «бла»,

В обоих случаях использовался ожидаемый php.ini:

 Loaded Configuration File C:\Program Files (x86)\php\php.ini 

но раздел pgsql полностью отсутствовал из phpinfo в случае выполнения на основе apache и присутствовал в выполнении на основе командной строки.

Решение состояло в том, что я добавил следующую строку в apache httpd.conf:

 LoadFile "C:/Program Files (x86)/php/libpq.dll" 

Кажется, что по какой-то причине этот файл не загружается автоматически, когда apache запускает скрипт php, но он загружается, если я запускаю php-скрипт из командной строки.

Я надеюсь, что это помогает.

Я столкнулся с этой ошибкой, и в итоге это связано с тем, как загружается PHP extension_dir.

Если после печати phpinfo () вы обнаружите, что в PDO-заголовке PDO-драйверу установлено значение «нет» , вы можете проверить, что вы успешно загрузили свой каталог расширений, как описано в этом сообщении:

https://stackoverflow.com/a/14786808/2578505

В Gentoo используйте postgres флага USE в файле /etc/portage/make.conf и re emerge "emerge php"

Для тех из вас, у кого есть эта проблема с PHP 5.6, вы можете использовать следующую команду:

 yum install php56w-pgsql 

Чтобы получить список имен пакетов для PHP 5.6, откройте следующую ссылку и прокрутите вниз до пакетов:

PHP 5.6 на CentOS / RHEL 7.0 и 6.6 через Yum

установите необходимый пакет. если вы используете yum:

 yum search pgsql 

затем посмотрите на результат и найдите что-нибудь вроде «php-pgsql» или что-то в этом роде. скопируйте имя и затем:

 yum install *paste the name of the package here* 

В ОС Windows найдите это в php.ini «php_pgsql.dll» и удалите «;» в расширении, то вот и все 🙂 Cheeers!