/node-phpcgi

Execute php in node with php-cgi

Primary LanguageJavaScript

node-phpcgi

A simple middleware for node to execute php with php-cgi.

Foreword

Before using this, make sure you have already installed the php-cgi

Note:Not the php command.

Quick Start

First, install it in your project directory:

npm install node-phpcgi

Then, use it in your node server like this:

var middleware = require('node-phpcgi')({
    documentRoot: __dirname,
    // change it to your own handler path
    handler: '/usr/local/php/bin/php-cgi'
});
var app = http.createServer(function(req, res) {
    middleware(req, res, function(err) {});
});

If you are using connect, you can use it like this:

var connect = require('connect');
var phpcgi = require('node-phpcgi')({
    documentRoot: __dirname,
    // change it to your own path
    handler: '/usr/local/php/bin/php-cgi'
});
var app = connect();
app.use(phpcgi);

Specially for edp, you can use it like this:

{
    location: /\.php($|\?)/,
    handler: [
        require('node-phpcgi/edp')()
    ]
}

There is a complete example using expressjs here, which you can refer to it.

Customize

If you want to specify the arguments for php, just add them:

var middleware = phpcgi({
    documentRoot: __dirname,
    // change it to your own path
    handler: '/usr/local/php/bin/php-cgi'
    // you can add any available php-cgi args here.
    args: ['-c', '/usr/local/php/lib/php.ini']
});

Test

Clone into somewhere:

git clone https://github.com/hushicai/node-phpcgi.git

Before you can run the tests, you should change the handler path in the test/spec.js file:

var middleware = phpcgi({
    documentRoot: __dirname + '/htdocs',
    // change it to your own path
    handler: '/usr/local/php/bin/php-cgi'
});

If you does not install the global mocha, install it:

npm install -g mocha

After that, you can do this:

# cd the repo directory
npm install
mocha

This package is inspired from gateway.