Я решил обновить свой Mac до Yosemite, но теперь Postgres не работает.
Это моя среда
apachectl -v
Server version: Apache/2.4.9 (Unix)
Server built: Sep 9 2014 14:48:20
php -v
PHP 5.6.2 (cli) (built: Oct 24 2014 15:50:08)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
PostgreSQL 9.3
Что я пытался сделать:
1. Установите с заваркой
brew tap josegonzalez/php
brew install php56 --with-apache --with-mysql --with-intl --with-pgsql=/Library/PostgreSQL/9.3/
brew link --overwrite php56
включить расширение
sudo nano /usr/local/etc/php/5.6/php.ini
и добавить
extension=pdo_pgsql.so
sudo apachectl restart
2. Ручная компиляция
sudo pecl download pdo_pgsql
sudo tar xzf PDO_PGSQL-1.0.2.tgz
sudo cd PDO_PGSQL-1.0.2
sudo phpize
sudo ./configure --with-pgsql=/Library/PostgreSQL/9.3/
sudo make
sudo make -j5 test
sudo make -j5 install
3. Установка phpbrew
sudo phpbrew install --mirror http://br1.php.net 5.6.2 +pdo+pgsql=/Library/PostgreSQL/9.3/bin/
Это определенно не работает, когда я пытаюсь с этим файлом:
<?php
ini_set ("display_errors", "1");
error_reporting(E_ALL);
$host = "host=127.0.0.1";
$port = "port=5432";
$dbname = "dbname=peajetron";
$credentials = "user=peajetron password=peajetron";
$db = pg_connect( "$host $port $dbname $credentials" ) or die('Could not connect');;
if(!$db){
echo "Error : Unable to open database\n";
} else {
echo "Opened database successfully\n";
}
?>
Когда я пытаюсь этот код, я получаю ту же ошибку:
Fatal error: Call to undefined function pg_connect() in /Library/WebServer/Documents/testConnection.php on line 10
Я не знаю, что я делаю не так. Может кто-нибудь мне помочь?
ОБНОВИТЬ:
В соответствии с phpinfo
У меня есть php.ini в /etc/php.ini
В соответствии с помощью PHP я запускаю эту команду
php -c /etc/php.ini
И у меня следующая ошибка:
PHP Warning: PHP Startup: Unable to load dynamic library
'/usr/local/Cellar/php56/5.6.2/lib/php/extensions/no-debug-non-zts-20131226/php_pdo_pgsql.so'
- dlopen(/usr/local/Cellar/php56/5.6.2/lib/php/extensions/no-debug-non-zts-20131226
/php_pdo_pgsql.so, 9): image not found in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library
'/usr/local/Cellar/php56/5.6.2/lib/php/extensions/no-debug-non-zts-20131226/php_pgsql.so'
- dlopen(/usr/local/Cellar/php56/5.6.2/lib/php/extensions/no-debug-non-zts-20131226/php_pgsql.so,
9): image not found in Unknown on line 0
Решение
Я удалил все и переустановил все, в соответствии с этим сообщение
У вас установлено две копии PHP. Mac OS X поставляется с копией PHP, установленной на /usr/bin/php
, Когда вы используете homebrew
менеджер пакетов, устанавливает пакеты в /usr/local/Cellar
а затем символические ссылки их (когда уместно) в /usr/local/bin
, Вы можете проверить это, набрав /usr/bin/php -v
а также /usr/local/bin/php -v
и вы должны получить два разных выхода.
Когда вы установили postgres
с homebrew
Настроил homebrew
установленная копия PHP для использования postgres
, Если вы бежите /usr/local/bin/php -r 'phpinfo()'
, вы должны увидеть, что postgres
установлено.
Копия apache
у вас настроено использование копии PHP, установленной в Mac OS X, вместо копии, homebrew
установлены. Вам необходимо перенастроить Apache для использования правильного модуля PHP.
Попробуйте отредактировать /etc/apache2/httpd.conf
файл с вашим любимым текстовым редактором. Найдите строку, которая говорит:
LoadModule php5_module libexec/apache2/libphp5.so
Измените это на:
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
Сохраните файл, затем запустите sudo apachectl configtest
а также sudo apachectl restart
, Направьте свой браузер обратно на phpinfo()
файл, и вы должны увидеть postgres
настроен правильно.
Следуй этим шагам
1) запустите yum install php-pdo_pgsql
2) добавить эти строки в php.ini
extension=pdo_pgsql.so
extension=pgsql.so
3) перезапустить apache
Готово
Я исправил эту проблему, используя:
brew install php56 --with-mysql --with-homebrew-apache
А затем добавьте в httpd.conf
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so