Включение поддержки PostgreSQL в PHP на Mac OS X - PullRequest
29 голосов
/ 05 июля 2011

Мне ужасно трудно заставить команду pg_connect () работать должным образом на моем Mac.В настоящее время я пишу скрипт PHP (который будет выполняться из консоли) для чтения базы данных PostgreSQL и отправки отчета по электронной почте.

Я зашел в свой файл php.ini и добавил

extension=pgsql.so

Но я столкнулся со следующей ошибкой.

Предупреждение PHP: Запуск PHP: невозможно загрузить динамическую библиотеку '/usr/lib/php/extensions/no-debug-non-zts-20090626/php_pgsql.so' - dlopen (/ usr /lib / php / extensions / no-debug-non-zts-20090626 / php_pgsql.so, 9): изображение не найдено в Unknown в строке 0
Неустранимая ошибка PHP: вызов неопределенной функции pg_connect () в ... (бла файл здесь)

При запуске phpinfo() я ничего не вижу в PostgreSQL, так в чем моя проблема здесь?

Ответы [ 10 ]

71 голосов
/ 06 июля 2011

Версия PHP, поставляемая в комплекте с OS X, не включает PostgreSQL.Вы должны будете скомпилировать расширение самостоятельно.Вот несколько инструкций:

  1. Найдите свою версию PHP: php -v.
  2. Загрузите версию PHP, соответствующую вашей: curl -O http://us.php.net/distributions/php-5.3.3.tar.gz.(Этот пример загружает PHP 5.3.3, но он должен соответствовать вашей версии)
  3. Извлеките загруженный архив: tar -xzvf php-5.3.3.tar.gz
  4. Перейдите в каталог расширений PostgreSQL: cd php-5.3.3/ext/pgsql/
  5. Тип phpize.
  6. Тип ./configure.
  7. Тип make.
  8. Тип sudo make install.
  9. Добавить расширение кВы php.ini файл, добавив extension=pgsql.so.(Возможно, вы уже сделали это)
  10. Перезапустите Apache.

Обновление для OS X Mountain Lion Apple удалила autoconf из более новых версий XCodeтак что процедура выше не удастся на # 5.Чтобы решить эту проблему:

  1. Тип /usr/bin/ruby -e "$(/usr/bin/curl -fksSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)".
  2. Тип sudo chown -R $USER /usr/local/Cellar.
  3. Тип brew update.
  4. Тип brew install autoconf.

Это должно установить autoconf и позволить вам установить модуль, следуя инструкциям выше.

36 голосов
/ 20 сентября 2015

Если вы используете home brew, вы можете решить это с помощью такой простой команды:

brew install php55-pdo-pgsql

для другой версии PHP, поиск с помощью:

brew search pgsql

8 голосов
/ 08 августа 2014

Это работало для меня с OSX 10.9.4 « Mavericks »

Установка источников

Скачать исходный код PHP. В отличие от Mountain Lion, у вас нет предустановленных заголовков, с которыми можно связываться, поэтому нужно поместить их в / usr / include / php. Mavericks поставляется с PHP 5.4.17, но последний источник 5.4.x из php.net должен делать:

tar -jxvf php-5.4.20.tar.bz2
sudo mkdir -p /usr/include
sudo mv php-5.4.20 /usr/include/php

Настройка PHP

cd /usr/include/php
./configure --without-iconv
sudo cp /etc/php.ini.default /etc/php.ini

Сборка модуля

Мне был нужен модуль pdo_pgsql - тот же шаблон должен применяться практически ко всем модулям, если у вас установлены необходимые зависимости:

cd ext/pdo_pgsql

В моем случае у меня была следующая ошибка:

Не удается найти автоконф. Пожалуйста, проверьте установку autoconf и Переменная среды $ PHP_AUTOCONF. Затем повторно запустите этот скрипт. ОШИБКА: Ошибка phpize

Так что мне пришлось использовать эту команду:

brew install autoconf

Тогда:

phpize

После этого я попытался сделать: ./configure

но у меня была следующая проблема:

проверка на pg_config ... не найдено configure: error: не удается найти libpq-fe.h. Пожалуйста, укажите правильный путь установки PostgreSQL

Таким образом, решение заключалось в том, чтобы указать правильный путь установки PostgreSQL:

./configure --with-pdo-pgsql=/Library/PostgreSQL/9.3/
make
sudo make install

Копирует pdo_pgsql.so в / usr / lib / php / extensions / no-debug-non-zts-20100525.

Затем просто добавьте

extension=pdo_pgsql.so to /etc/php.ini 

Запустите php -m, чтобы подтвердить, что все пошло по плану.

7 голосов
/ 14 августа 2016

Для тех, кто установил php7 / ngix / postgres с homebrew

Вы можете установить модуль PostgreSQL с помощью:

brew install php70-pdo-pgsql

После этого необходимо перезапустить службу php:

brew services restart php70
3 голосов
/ 09 июня 2016

Для php56 через варку:

brew install php56-pdo-pgsql
3 голосов
/ 01 февраля 2016

Пользователи OS X El Capitan могут просто обновить свою версию PHP 5.6. Это один лайнер, который сделает это.

curl -s http://php -osx.liip.ch / install.sh | bash -s 5,6

2 голосов
/ 11 октября 2015

Я убил весь день, пытаясь заставить его работать на El Capitan после того, как вчера сделал обновление, и оказалось, что я забыл изменить httpd.conf и изменить путь с модуля php по умолчанию (версия 5.5.27) натот, который я установил (версия 5.6.14).Это следует сделать в httpd.conf, изменив путь по умолчанию LoadModule php5_module на LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so.Просто решил оставить его здесь как потенциальное решение для тех, кто обновляет свою ОС или просто версию PHP и сталкивается с той же проблемой.

2 голосов
/ 22 января 2014

PostgreSQL по умолчанию устанавливается в необычном месте на MAC OS X:

/Library/PostgreSQL/9.3

Учитывая расположение выше, вы можете ввести это:

./configure --with-pgsql=/Library/PostgreSQL/9.3
0 голосов
/ 13 ноября 2015

Я скачал PostgreSQL для Mac и после установки использовал конструктор стека, чтобы полностью встать на ноги в стеке EnterpriseDB Apache / PHP. Я упоминаю это как возможный вариант экономии времени, вероятно, не идеальный для всех ситуаций. Должно работать нормально, если apache и postgres, поставляемые с Mac OS X, никогда не запускались.

Чтобы обеспечить стабильность существующих приложений, размещенных на Apache (то есть до установки PostgreSQL прежних версий), я бы просто установил более новый apache EnterpriseDB на порт 81 (stackbuilder запросит новый порт, если устаревший экземпляр apache уже запущен). Затем используйте mod_proxy в httpd.conf для apache, работающего на порте 80, чтобы обеспечить удобство работы с приложениями, размещенными на PostgreSQL.

0 голосов
/ 18 апреля 2014

Для тех из вас, у кого ошибка openssl, а make - вот решение

OSX использует openssl 0.98, пока установщик ищет 1.0.0

, обратитесь к этой ссылке для получения инструкций

Ошибка установки psycopg2 - Библиотека не загружена: libssl.dylib

...