Extensions
HHVM provides dozens of built-in, integrated extensions and allows for other extensions to be dynamically loaded. Since this is an HHVM user's guide, this does not discuss how to build your own extension, but there are resources for that listed below.
Integrated Extensions
If you call get_loaded_extensions()
from HHVM, you will find that the following extensions are integrated into HHVM
This documentation links to the PHP documentation about PHP extensions. It is however important to keep in mind that hhvm has been slowly drifting away from PHP. Most extensions have the features that they had in PHP 7.0 or 7.1. Features added in newer releases of PHP may not have been implemented. Some functionality may be missing or may not have typechecker definitions.
Some APIs may have changed (think of &$references
to inout
changes).
Some functions may have been split up into multiple functions if the PHP function took an optional &$reference
argument.
For the most up-to-date function signatures, please refer to your version of the typechecker definitions.
- apache
- array
- asio
- async_mysql
- bc
- bz2
- ctype
- curl (async curl)
- datetime
- debugger (phpdbg)
- dom
- domdocument
- enum
- exif
- fb
- fileinfo
- filter
- gd
- gmp
- hash
- hhvm.debugger
- hhvm.ini
- hosthealthmonitor
- hotprofiler
- iconv
- idn
- imagick
- imap
- intervaltimer
- intl
- json
- ldap
- libxml
- mailparse
- mbstring
- mcrouter
- mcrypt
- memcache
- memcached
- objprof
- openssl
- pcntl
- pcre
- pdo
- pdo_mysql
- pdo_pgsql
- pdo_sqlite
- pgsql
- posix
- readline
- reflection
- server
- SimpleXML
- soap
- sockets
- spl
- sqlite3
- stream (async streams)
- string
- sysvmsg
- sysvsem
- sysvshm
- thrift_protocol
- url
- xenon
- xhprof
- xml
- xmlreader
- xmlwriter
- xsl
- zip
- zlib
Dynamically Loaded Extensions
Loading
To load a dynamically loaded extension, follow the instructions for that extension. However, it generally goes like this:
cd /path/to/extension
hphpize
cmake .
make
This will create an .so
file. Then in your configuration .ini
file:
extension_dir = /etc/hhvm
hhvm.extensions[extension_name] = extension.so
or
hhvm.dynamic_extensions[extension_name] = extension.so
Building Your Own Extension
Creating your own extension is beyond the scope of this user guide, but there are some good external resources to help get you started:
http://blog.golemon.com/2015/01/hhvm-extension-writing-part-i.html