2015-04-05 88 views
0

我知道HHVM不支持Postgres,但是有允許使用postgres PDO的hiphop擴展。HHVM 3.7.0 Postgresql PDO

我已經成功地編譯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 

這一直很好安裝HHVM,我也因爲開發需要連接到一個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。我不確定從哪裏得到它。我假設它在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步驟安裝所有通過yum。我發現這樣的作品,但是hhvm版本有一些bug已經被修復了。 正如我寫這篇文章,我試圖從yum install hhvm-ext-pgsql安裝pgsql.so安裝,導致下面的錯誤。 (理解)。

[[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?

  • 它假定知識?
  • 我在未來如何解決這個問題而不要在這裏提出問題,牢記我已經嘗試了通常的研究和谷歌,並沒有發現任何有價值的東西。

回答

1

嘗試1只是不會工作,文檔是完全錯誤的,並且I filed an issue about it

嘗試2,PocketRent延伸,方向是正確的,雖然擴展可能沒有被最近更新。您應該報告編譯失敗on their issue tracker(或者在追蹤器中搜索一個存在的問題,儘管沒有發現任何問題)。誰建是相當不錯的,雖然他們有時會忘記更新擴展時HHVM改變,直到有人提醒他們:)傢伙

我不會在這裏使用的預構建擴展;擴展需要根據它們運行的​​HHVM的版本來構建。由於混合使用一個HHVM版本的擴展與另一個版本的HHVM進行混合,你看到的崩潰是我懷疑的。 (這應該產生一個有用的錯誤,但我們最近有一個bug,我們就無法檢測到這一點,反而會崩潰!)

+0

感謝您提交的問題,虐待看看你說的關於嘗試2,標記爲什麼我跟他們說話後回答。關於預構建的問題,我只是在問題中提到它,所以不會被別人提出。無論如何,我不認爲它會起作用。無論如何,堆棧跟蹤確實會產生看起來有用的信息。 – Matt 2015-04-06 03:35:33