Add a Virtual Host

Getting Started




3rd Party and custom plugins

In order to access the PHPCI web interface, you need to set up a virtual host in your web server.

Below are a few examples of how to do this for various different web servers.

Nginx Example:

server {
        ... standard virtual host ...

        location / {
                try_files $uri @phpci;

        location @phpci {
                # Pass to FastCGI:
                fastcgi_pass    unix:/path/to/phpfpm.sock;
                fastcgi_index   index.php;
                fastcgi_buffers 256 4k;
                include         fastcgi_params;
                fastcgi_param   SCRIPT_FILENAME $document_root/index.php;
                fastcgi_param   SCRIPT_NAME index.php;

Apache Example:

For Apache, you can use a standard virtual host, as long as your server supports PHP. All you need to do is add the following to a .htaccess file in your PHPCI /public directory.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

Installing in Vagrant

  • Edit virtual host in apache2.
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/phpci/public
    ServerName phpci.vagrant
    ServerAlias phpci.vagrant

    <Directory /var/www/phpci/public >
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    ErrorLog ${APACHE_LOG_DIR}/phpci-error_log
    CustomLog ${APACHE_LOG_DIR}/phpci-access_log combined
  • In Mac OS X add in /etc/hosts   phpci.vagrant

Other Servers

Lighttpd Example (lighttpd >= 1.4.24):

This example uses the $HTTP["host"] conditional block because $HTTP["url"] blocks aren't supported with url rewriting in lighttpd <= 1.4.33 (source: lighttpd docs for mod_rewrite). In lighttpd >= 1.4.34 however, this has been fixed.

lighttpd <= 1.4.33

$HTTP["host"] =~ "^phpci\.example\.com$" {
        # Rewrite all requests to non-physical files
        url.rewrite-if-not-file =
            "^(.*)$" => "index.php/$1"

lighttpd >= 1.4.34

$HTTP["url"] =~ "^\/PHPCI/$" {
        # Rewrite all requests to non-physical files
        url.rewrite-if-not-file =
            "^(.*)$" => "index.php/$1"

If you ~~would like~~ are forced to use lighttpd <= 1.4.24, [you can use mod_magnet and Lua instead] (

Built-in PHP Server Example:

You can use the built-in PHP server php -S localhost:8080 by adding public/routing.php.


if (file_exists(__DIR__ . '/' . $_SERVER['REQUEST_URI'])) {
    return false; // serve the requested resource as-is.
} else {
    include_once 'index.php';

You can edit this page on Github. Your changes will appear on this site within 15 minutes.

Subscribe to the PHPCI Newsletter