经过一番努力,我终于在Ubuntu中安装了Facebook HipHop虚拟机。它在FastCGI(Apache 2.22)下运行。下面是服务状态:
marcelo@marcelo-VirtualBox:~$ service apache2 status
Apache2 is running (pid 3330).
marcelo@marcelo-VirtualBox:~$ service hhvm status
* hhvm is running
marcelo@marcelo-VirtualBox:~$ sudo service hhvm restart
* Restarting HHVM FastCGI Daemon hhvm [ OK ]
marcelo@marcelo-VirtualBox:~$
同一台机器在Apache中启用并配置了PHP5模块。
我想确保使用PHP
而不是HHVM
来渲染Zend Framework
代码。
我的所有PHP脚本都在网络服务器上运行。但是,当我使用sudo a2dismod php5
禁用PHP5模块时,Web服务器开始呈现Internal Server Error
。
HHVM是否需要启用PHP5模块才能运行?据说,由于我使用的是FastCGI,我的答案是否定的。另一方面,我认为我的页面是由Zend而不是HHVM呈现的。
我在这里缺少什么?我怎样才能确保我真的在运行HHVM? (在我看来,一个明确的测试是禁用PHP5模块,但是,正如我所说,当我禁用时,php停止在Web浏览器中工作)。
如果.php未在PHP5 module
停用的情况下运行,是否意味着我的HHVM
配置不正确?
P.S。:我正在测试的脚本是默认的Hello World示例:<?php echo 'Hello World.'; ?>
。
并且,当我从命令行运行时它可以工作:
marcelo@marcelo-VirtualBox:/var/www$ sudo hhvm hello_world.php
Hello World.
marcelo@marcelo-VirtualBox:/var/www$
修改
Apache error.log:
marcelo @ marcelo-VirtualBox:/ var / log / apache2 $ cat error.log [Wed May 07 2014年2月14日10:10] [通知] FastCGI:流程经理初始化(pid 2627) [Wed May 07 2014年2月14日10:10] [通知] Apache / 2.2.22(Ubuntu)mod_fastcgi / mod_fastcgi-SNAP-0910052141已配置 - 恢复正常操作 [Wed May 07 14:04:52 2014] [error] [client 127.0.0.1](2)没有这样的文件或目录:FastCGI:无法连接到服务器&#34; /var/www/fastcgi/hhvm.fastcgi& #34;:connect()失败 [Wed May 07 14:04:52 2014] [错误] [client 127.0.0.1] FastCGI:从服务器收到的不完整标题(0字节)&#34; /var/www/fastcgi/hhvm.fastcgi" [Wed May 07 14:04:53 2014] [错误] [client 127.0.0.1]文件不存在:/var/www/favicon.ico marcelo @ marcelo-VirtualBox:/ var / log / apache2 $
(显然,我应该有&#39; hhvm.fastcgi&#39;文件。我只有目录。这里有什么问题吗?)
/var/www
目录:
- FastCGI配置: 我按照以下建议添加了以下行:https://github.com/facebook/hhvm/wiki/FastCGI,apache2.conf文件末尾的 。换句话说,毕竟&#39; mods-enabled&#39;已经装好了。
# fastcgi added by M. Sardelich
<IfModule mod_fastcgi.c>
Alias /hhvm.fastcgi /var/www/fastcgi/hhvm.fastcgi
FastCGIExternalServer /var/www/fastcgi/hhvm.fastcgi -socket /var/run/hhvm/socket -pass-header Authorization -idle-timeout 300
<Directory "/var/www/fastcgi">
<Files "hhvm.fastcgi">
Order deny,allow
</Files>
</Directory>
AddHandler hhvm-hack-extension .hh
AddHandler hhvm-php-extension .php
Action hhvm-hack-extension /hhvm.fastcgi virtual
Action hhvm-php-extension /hhvm.fastcgi virtual
</IfModule>
答案 0 :(得分:6)
要确保您实际上正在运行HHVM,请运行以下命令:
phpinfo();
它应该生成HipHop
作为输出,而不是正常的php信息。
要以编程方式检查,您可以使用以下(also mentioned here):
if (defined('HHVM_VERSION')) {
echo "ruuning HHVM";
}
答案 1 :(得分:2)
正确注意到(感谢@Petah),我的FastCGI配置错误。
我将其更改为下面的代码段(从这里:http://www.mediawiki.org/wiki/HHVM/Vagrant),一切正常! (将其添加到您的apache2.conf
或httpd.conf
文件)
<IfModule mod_fastcgi.c>
Alias /hhvm.fastcgi /var/www/fastcgi/hhvm.fastcgi
FastCGIExternalServer /var/www/fastcgi/hhvm.fastcgi -host 127.0.0.1:9000 -pass-header Authorization -idle-timeout 300
<Directory "/var/www/fastcgi">
<Files "hhvm.fastcgi">
Order deny,allow
</Files>
</Directory>
AddHandler hhvm-hack-extension .hh
AddHandler hhvm-php-extension .php
Action hhvm-hack-extension /hhvm.fastcgi virtual
Action hhvm-php-extension /hhvm.fastcgi virtual
</IfModule>