2015-04-05 3 views
0

Я действительно понимаю, что HHVM не поддерживает Postgres, но есть расширения для hiphop, которые позволяют использовать Postgres PDO.HHVM 3.7.0 Postgresql PDO

Я успешно скомпилирован hhvm и установил hhvm со следующими командами

[[email protected] ~]# git clone https://github.com/facebook/hhvm -b master hhvm --recursive 
[[email protected] ~]# cd hhvm 
[[email protected] hhvm]# ./configure 
[[email protected] hhvm]# make -j5 
[[email protected] hhvm]# make install 

Это работало отлично, и я с тех пор разработали необходимость подключения к базе данных Postgres.

Покушение 1

Следующая страница предлагает добавить --with-pdo-pgsql=/path/to/pg_config аргумент при настройке. http://docs.hhvm.com/manual/en/ref.pdo-pgsql.php

[[email protected] hhvm]# find/-name pg_config 
/usr/bin/pg_config 
[[email protected] hhvm]# ./configure --with-pdo-pgsql=/usr/bin/pg_config 
[[email protected] hhvm]# make -j5 
[[email protected] hhvm]# make install 

и не видели каких-либо улучшений

[[email protected] hhvm]# hhvm ~/test.php 
Fatal error: Call to undefined function pg_connect() in /root/test.php on line 2 

Покушение 2

страница расширений hhvm вики (https://github.com/facebook/hhvm/wiki/Extensions) ссылки на https://github.com/PocketRent/hhvm-pgsql

Я последовал шаги, чтобы сделайте расширение hhvm-pgsql.

[[email protected] ~]# git clone https://github.com/PocketRent/hhvm-pgsql.git 
[[email protected] ~]# cd hhvm-pgsql 
[[email protected] hhvm-pgsql]# hphpize 
[[email protected] hhvm-pgsql]# cmake . 
[[email protected] hhvm-pgsql]# make 
[ 25%] Building CXX object CMakeFiles/pgsql.dir/pgsql.cpp.o 
In file included from /root/hhvm-pgsql/pgsql.cpp:2:0: 
/root/hhvm-pgsql/pgsql.h:6:45: fatal error: hphp/runtime/base/base-includes.h: No such file or directory 
#include "hphp/runtime/base/base-includes.h" 
              ^
compilation terminated. 
make[2]: *** [CMakeFiles/pgsql.dir/pgsql.cpp.o] Error 1 
make[1]: *** [CMakeFiles/pgsql.dir/all] Error 2 
make: *** [all] Error 2 

Очевидно, что я отсутствует base-includes.h. Я не уверен, где его получить. Im полагает, что в пакете hhvm-dev упоминается репо, но где я должен получить необходимые файлы, видя, как будто я только что скомпилировал hhvm?

[[email protected] hhvm]# find/-name base-includes.h 

ничего не находит.

Дополнительная информация

[[email protected] hhvm]# cat /etc/redhat-release 
CentOS Linux release 7.1.1503 (Core) 
[[email protected] hhvm]# hhvm --version 
HipHop VM 3.7.0-dev (rel) 
Compiler: heads/master-0-g6bec157aad74985e64d3d9fe928ad5cc490f5876 
Repo schema: e36ae4255d99eb78d62256c73ee53fadb05d65e0 

Я также последовали шаги по https://github.com/facebook/hhvm/wiki/Prebuilt-Packages-on-Centos-7.x установить все это с помощью ням. Я нашел, что работает, но эта версия hhvm имеет некоторые ошибки, которые с тех пор были исправлены. Как я писал это, я попытался потянуть pgsql.so, установленный с yum install hhvm-ext-pgsql, в результате чего появилась ошибка ниже. (По понятным причинам).

[[email protected] ~]# hhvm test.php 
Uncaught exception: Could not load extension /usr/local/lib64/hhvm/extensions/pgsql.so: getModuleBuildInfo() symbol not defined. (/usr/local/lib64/hhvm/extensions/pgsql.so: undefined symbol: getModuleBuildInfo) 
Core dumped: Segmentation fault 
Stack trace in /tmp/stacktrace.4181.log 
Segmentation fault 

В любом случае, мой вопрос ...

Что я делаю неправильно/отсутствует в Покушение 1?

Как я могу успешно выполнить попытку 2?

  • Предполагается ли знание?
  • Как я могу справиться с этим в будущем, не задавая здесь вопроса, имея в виду, что я попытался провести обычное исследование и Google и не нашел ничего полезного.

ответ

1

Попытка 1 просто не сработает, документы просто ошибочны и I filed an issue about it.

Попытка 2, расширение PocketRent, является правильным направлением, хотя последнее обновление, возможно, не было обновлено в последнее время. Вы должны сообщить об ошибке компиляции on their issue tracker (или найти трекер для существующей проблемы, хотя никто не выпрыгивает на меня). Ребята, которые его построили, неплохо, хотя иногда забывают обновлять расширение, когда меняется HHVM, пока кто-то их не напомнит :)

Я бы не использовал предустановленное расширение здесь; расширения должны быть созданы против именно версии HHVM, с которой они работают. Я подозреваю, что произошедший сбой произошел из-за смешивания расширения, построенного с одной версией HHVM, с запуском его на другом. (Это должно вызвать полезную ошибку, но в последнее время у нас была ошибка, и мы бы не обнаружили это и вместо этого столкнулись бы!)

+0

Спасибо, что зарегистрировали проблему. Послушайте, что вы сказали о попытке 2, и отметьте как ответьте, когда я говорю с ними. Что касается заранее подготовленного, я только упомянул об этом в вопросе, поэтому другие не предлагали. Я не думал, что это сработает. Трассировка стека в любом случае создавала то, что выглядит полезной. – Matt

Смежные вопросы