Назад | Перейти на главную страницу

Как вручную собрать и установить PHP-расширение pgsql в Ubuntu

Я искал все подряд и ничего не нашел. Возможно, я не знаю, что искать.

Среда - Ubuntu Lucid (10.4) с PHP 5.2.4 и PostgreSQL 9.2.

PHP "удерживается" в версии 5.2.4 с dpkg --set-selections. Я могу найти только версию php5-pgsql 5.2.6, и когда я пытаюсь установить ее с помощью dpkg, он жалуется, что PHP находится на уровне 5.2.4.

Пробный запуск с aptitude install php5-pgsql сообщает мне, что хочет перейти на PHP 5.3.

Изменить: обновление PHP в настоящее время невозможно.

Я должен добавить: я пытался собрать PHP 5.2.4 из исходников, используя --with-pgsql --with-pdo-pgsql. Никаких расширений в результате не получил. Установлены как libpq, так и libpq-dev.

Кажется, это помогает:

  1. Загрузите и разархивируйте исходный код PHP.
  2. Обеспечить libpq5 и libpq-dev установлены.
  3. cd php_x.x.x/ext/pgsql
  4. phpize
  5. ./configure
  6. make
  7. sudo make install
  8. редактировать php.ini добавить extension=pgsql.so и любые другие необходимые директивы pgsql.
  9. Перезагрузите apache.

Перво-наперво: если вы говорите о производство система, а вы не системный администратор (ваш комментарий указывает, что вы не), не трогай систему.

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


С учетом всего сказанного, если вы хотите сделать это вручную, вы должны точно определить, что устанавливается php5-pgsql пакет (помимо PHP, скомпилированного с поддержкой Postgres, он также включает расширение pgsql PDO, и, возможно, другие вещи). Затем вам нужно вручную установить все детали.

Нет никакой гарантии, что вы сможете собрать эту головоломку: например, PECL (где вы получите расширение PDO) тестируется только на поддерживаемых версиях PHP. Так и будет наверное работают, но если это не так, решение - «Обновите PHP до поддерживаемой версии».


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

Привязка вашей системы к определенной версии PHP - это плохо.
Если у вас есть система, которая требует PHP 5.2 (которая давно не поддерживается и изобилует известными дырами в безопасности), самое время сесть со своим системным администратором и написать записку для двух уровней управления над вами. (Если ваш системный администратор не понимает, почему это проблема ты напишите меморандум и поставьте ему копию.)

Блокировка вашей системы на определенном уровне патча PHP - это Безумный.
Если у вас есть система, абсолютно требует PHP 5.2.4, вы уже должны были написать об этом памятку и кричать всем лично о том, что это неустойчиво и создаст серьезные проблемы в будущем.
Если бы вы написали эту записку, именно здесь вы можете выглядеть прозорливо и сказать: «Помните ту записку?» - В противном случае вы можете написать это сейчас (что выглядит не так хорошо, но, по крайней мере, показывает, что вы выполняете свою работу и указываете на серьезные риски для бизнеса).