Laravel 5 + Homestead + HHVM + PGSQL = Драйвер не найден

В моем проекте PHP используется PGSQL. Он успешно работает с Homestead на моей машине dev. Как только я добавлю hhvm: true в свой проект в homestead.yaml, и предоставление - мое веб-приложение выбрасывает PDOException с драйвером, не найден. Исключение исчезает, когда я удаляю hhvm:true и повторно размещаю усадьбу.

Очевидно, что в конфигурацию HHVM не входит драйвер PGSQL.

Как это исправить?

Ответы

Ответ 1

Вы не указали много подробностей о вашей настройке, поэтому неясно, установлен ли драйвер Postgres. Postgres не поддерживается прямо из коробки. Вы должны сами создать и/или установить его.

В Facebook есть "официальный" список расширений HHVM. PGSQL еще не интегрирован в HHVM, но страница Facebook указывает на внешний проект GitHub, который находится здесь:

Расширение Postgres для HHVM

Ниже приведено краткое описание инструкций проекта; вы можете прочитать их самостоятельно в файлах README.md.

Сборка из источника

Если вы хотите создать его из исходного кода, вам понадобятся пакеты hhvm-dev и libpq-dev. После того, как они будут установлены, следующие команды будут строить расширение:

$ cd /path/to/source
$ hphpize
$ cmake .
$ make

Это приведет к созданию файла pgsql.so, динамически загружаемого расширения. Скопируйте этот файл в /etc/hhvm/pgsql.so.

Предварительно созданные двоичные файлы

Если вы не хотите его создавать, для отдельных популярных дистрибутивов в отдельной ветке релизов есть готовые двоичные версии: Releases.

Снова скопируйте загруженный файл pgsql.so в /etc/hhvm/pgsql.so.

Конфигурация

Если вы создаете исходный код или устанавливаете двоичные файлы, вам нужно сообщить HHVM, где его найти. Измените файл конфигурации (обычно /etc/hhvm/php.ini) и добавьте их, если они отсутствуют:

extension_dir = /etc/hhvm
hhvm.extensions[pgsql] = pgsql.so

Вы можете проверить, что все работает, запустив

hhvm --php -r 'var_dump(function_exists("pg_connect"));'

Если все работает нормально, это выведет bool(true).

Вам может потребоваться перезапустить HHVM, чтобы сервер забирал расширение.