HHVM或PHP5 Zend是否正在运行?

时间:2014-05-07 01:24:47

标签: php apache zend-framework hhvm

经过一番努力,我终于在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目录:

    marcelo @ marcelo-VirtualBox:〜$ ls -l / var / www 共20 drwxrwxrwx 2 root root 4096 5月6日23:45 fastcgi -rw-r - r-- 1 root root 31 5月6日21:57 hello_world.php -rw-r - r-- 1 root root 177 5月6日17:47 index.html -rw-r - r-- 1 root root 5月6日17:50 info.php -rw-r - r-- 1 root root 0 May 6 17:49 info.php~ drwxr-xr-x 13 997 1001 4096 5月6日18:13 mediawiki-1.22.6 marcelo @ marcelo-VirtualBox:〜$ ls -l / var / www / fastcgi / 总计0 marcelo @ marcelo-VirtualBox:〜$

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

2 个答案:

答案 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.confhttpd.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>