pgsql.so не загружается в PHP - PullRequest
9 голосов
/ 14 мая 2010

Мне было поручено создать приложение PHP, которое обращается к существующей базе данных PostgreSQL. Я впервые работаю с Postgre, не говоря уже о том, что PHP уже установлен в Linux-боксе, на котором должно запускаться приложение. У меня нет опыта настройки этого материала, я просто пишу код.

Мой вопрос в том, что я не могу заставить работать расширение Postgre на PHP. Я проверил файл php.ini, там не было строк "extension = ...". Поэтому я добавил «extension = pgsql.so». Затем я проверил «extension_dir» и обнаружил, что там было только 2 файла (ldap.so, phpcups.so), я добавил файл pgsql.so, взятый из другого Linux-бокса. Я перезапустил httpd. И это не работает. Я не смог найти "pgsql" или "postgre" в phpinfo ().

Прости мою нубизм. Я слишком мало знаю Linux. Я был бы очень признателен, если бы вы указали мне правильное направление.


Я использовал предложение, данное номером 5:

Чувак, я на RedHat. Я использовал "yum" версию команды, которую вы дали, и я получил это:

[root @ perseus ~] # yum install php-pgsql Загрузка плагина installonlyn Настройка процесса установки Настройка репозиториев Не удалось получить список зеркал http://mirrorlist.centos.org/?release=5&arch=x86_64&repo=extras Ошибка была [Errno 4] IOError: Ошибка: не удается найти действительный baseurl для репо: extras


К сожалению, сервер Linux, который я использую, НЕ подключен к Интернету. Любой другой способ установки?

Ответы [ 4 ]

9 голосов
/ 14 мая 2010

Это зависит от того, какой дистрибутив Linux вы используете.

Если вы используете Ubuntu / Debian, вам необходимо:

sudo apt-get install php5-pgsql

Fedora / CentOS

yum install php-pgsql

обычно вы можете узнать, на каком дистрибутиве вы находитесь:

ls /etc/*-release
3 голосов
/ 14 мая 2010

В расширениях CentOS создайте отдельный файл * .ini по одному на каждое расширение php в /etc/php.d

.

Итак, не изменяйте основной файл * .ini, а создайте /etc/php.d/pgsql.ini и добавьте туда строку

extension=pgsql.so

Тогда вам нужно будет перезапустить Apache, используя

service httpd restart

Но лучший автоматизированный способ - просто набрать

yum install php-pgsql

В вашем случае это не сработало из-за некоторых проблем в конфигурации yum. Перейти на /etc/yum-repos.d Тип

nano /etc/yum.repos.d/CentOS-Base.repo

Прокрутите вниз до секции [extras] и убедитесь, что это так:

#additional packages that may be useful
[extras]
priority=1
name=CentOS-$releasever - Extras
=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

Исправьте это, если необходимо, сохраните файл (Ctrl-X) и сделайте следующее:

yum clean all
yum upgrade

После этого попробуйте повторить

yum install php-pgsql
1 голос
/ 14 мая 2010
  • Удалите .so файл, который вы скопировали с другого компьютера (хотя он может работать, не нужно рисковать)
  • Используйте менеджер пакетов дистрибутива для установки модуля php_pgsql / php5_pqsql
  • Перезагрузите апач и попробуйте снова. Возможно, модуль был автоматически добавлен в INI-файл
  • Если нет, запустите <?php echo 'ini: ', get_cfg_var('cfg_file_path');, чтобы увидеть, какой php.ini нужно редактировать
  • редактировать этот INI-файл
  • перезагрузите апач
0 голосов
/ 13 января 2017

В моей операционной системе Linux mint kde и была такая же проблема

pg_connect ()

Вы должны установить, если вы используете php5.6

sudo apt-get install php5.6-pgsql

После того как вы должны изменить имя расширения в файле "php.ini".

;extension=php_pgsql.dll

от 'dll' до 'so'

Например

extension=php_pgsql.so
...