np

node-phpfpm

node.js run php scripts via phpfpm

Showing:

Popularity

Downloads/wk

288

GitHub Stars

49

Maintenance

Last Commit

5yrs ago

Contributors

2

Package

Dependencies

2

License

MIT

Type Definitions

Tree-Shakeable

No?

Categories

Readme

node-phpfpm

node.js run php scripts via phpfpm

NPM

npm install node-phpfpm

Usage

var PHPFPM = require('node-phpfpm');

var phpfpm = new PHPFPM(
{
    host: '127.0.0.1',
    port: 9000,
    documentRoot: __dirname
});

phpfpm.run('test.php', function(err, output, phpErrors)
{
    if (err == 99) console.error('PHPFPM server error');
    console.log(output);
    if (phpErrors) console.error(phpErrors);
});

Configuration

var phpfpm = new PHPFPM(configObject);

configObject may have the following keys:

  • documentRoot optional [string] the document root folder of PHP scripts. must end with /
  • host optional [string] the ip or host name of php-fpm server (default: 127.0.0.1)
  • port optional [int] the port of php-fpm server ( default: 9000 )
  • sockFile optional [string] use the unix sock file instead of 127.0.0.1:9000 to connect php-fpm server

APIs

run(options, callback)

available keys in options object

  • uri [string] path to your phpfile
  • url [string] alias of uri
  • method optional [string] GET or POST (default: GET)
  • form optional [object] form_data that will be sent with content-type: application/x-www-form-urlencoded
  • json optional [object] json data that will be sent with content-type: application/json
  • body optional [string] raw post body data
  • contentType optional [string] the content-type header
  • contentLength optional [string] the content-length header

if you send a string as options, it will be converted to:

{ uri: "the string value", method: 'GET' }

callback

function(err, output, phpErrors)
{
    // if err === 99, means php-fpm error 
    // it may be lost php-fpm connection or too many connections
    // otherwise it will always equal to false
    
    // output is the stdout of php scripts
    
    // phpErrors is the php errors detail string
    // php will output some errors, but that does not mean the request fails
    // if you turn on display_errors in your php.ini, the phpErrors content will also be found in the output string
    
    console.log(err, output, phpErrors); 
}

Demo

Simple php request with no parameters

phpfpm.run('test1.php', function(err, output, phpErrors)
{
    console.log(err, output, phpErrors);
});

Send data via GET method

phpfpm.run('test.php?a=b&c=d&e[0]=1&e[1]=2', function(err, output, phpErrors)
{
    console.log(err, output, phpErrors);
});
<?php
print_r($_GET);
// Array
// (
//     [a] => b
//     [c] => d
//     [e] => Array
//         (
//             [0] => 1
//             [1] => 2
//         )
// )
?>

Send form data via POST method

phpfpm.run(
{
    uri: 'test.php',
    form: 
    {
        a:'a',
        b:'b'
    }
}, function(err, output, phpErrors)
{
    console.log(err, output, phpErrors);
});
<?php
print_r($_POST);
// Array
// (
//     [a] => a
//     [b] => b
// )
?>

Send json data with POST method

phpfpm.run(
{
    uri: 'test.php',
    json: 
    {
        a:'a',
        b:'b'
    }
}, function(err, output, phpErrors)
{
    console.log(err, output, phpErrors);
});
<?php
echo file_get_contents('php://input');
// {"a":"a","b":"b"}
?>

Send form data with GET method

phpfpm.run(
{
    uri: 'test2.php',
    method: 'GET',
    form: 
    {
        a:'a',
        b:'b'
    }
}, function(err, output, phpErrors)
{
    console.log(err, output, phpErrors);
});
<?php
print_r($_GET);
// Array
// (
//     [a] => a
//     [b] => b
// )
?>

Send form data and query string with GET method

phpfpm.run(
{
    uri: 'test2.php?c=cc',
    method: 'GET',
    form: 
    {
        a:'a',
        b:'b'
    }
}, function(err, output, phpErrors)
{
    console.log(err, output, phpErrors);
});
<?php
print_r($_GET);
// Array
// (
//     [c] => cc
//     [a] => a
//     [b] => b
// )
?>

Send raw body data with POST method

phpfpm.run(
{
    uri: 'test5.php',
    body: 'abc123'
}, function(err, output, phpErrors)
{
    console.log(err, output, phpErrors);
});
<?php
echo file_get_contents('php://input');
// abc123
?>

License

MIT

Thanks

This project is based on the great work of node-fastcgi-client written by LastLeaf. LastLeaf/node-fastcgi-client

How to execute PHP scripts with Node.JS

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100
No reviews found
Be the first to rate

Alternatives

No alternatives found

Tutorials

No tutorials found
Add a tutorial