Skip to content

Running PHP programs with HHVM

Drew Paroski edited this page Oct 6, 2013 · 12 revisions

Hello World

First, create hello.php:

<?php echo 'Hello from Hiphop'; ?>

Here's how to run a PHP program at the command line:

hhvm hello.php

Next, run hhvm as a server (if you installed from source it is in hphp/hhvm/hhvm):

sudo hhvm -m server

And it is that easy:

curl localhost/hello.php

Set port number

If you want to set a port number, add -p option as below.

hhvm -m server -p 8000

Pre-compiling

To get some more performance (10% - 25%) out of your scripts, you can pre-compile them. To pre-compile the PHP files file1.php and file2.php and place them into a bytecode archive named hhvm.hhbc, execute this command:

hhvm --hphp -thhbc -o some_dir file1.php file2.php

Now you will have a pre-compiled archive file named some_dir/hhvm.hhbc. The file hhvm.hhbc is actually an sqlite database file - you can even view the structure of the file using sqlite. This is similar to a java .jar or a python .par file. It is a stand-alone version of your scripts. To run the program file1.php, use this command:

hhvm -vRepo.Authoritative=true -vRepo.Central.Path=some_dir/hhvm.hhbc file1.php

To run the program file2.php, use this command:

hhvm -vRepo.Authoritative=true -vRepo.Central.Path=some_dir/hhvm.hhbc file2.php

Note: If you get the error message Unable to find/load systemlib.php, make sure you are pointing at the hhvm.hhbc file and not the directory.

More options

For more complicated setups, you'll want to create a config.hdf file. See the documentation for possible options. Then run it like:

hphp/hhvm/hhvm -m server -c config.hdf
Clone this wiki locally