npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

phpcgijs

v1.2.0

Published

Run and Execute PHP, JS, Ruby, Python 2, Python 3, ASPX, JSP, and CGI in CGI / Shell mode using node.js npm package / module. Includes cgijs npm module. `CGIJS` is a Nodejs Module/library to run any `CGI` mode/`Interpreted language script` files like PHP,

Downloads

169

Readme

phpcgijs

Run and Execute PHP, JS, Ruby, Python 2, Python 3, ASPX, JSP, and CGI in CGI / Shell mode using node.js npm package / module.


Run php scripts like wordpress, drupal, etc with node and cgi counter parts. phpcgijs also builds in a CGIJS library to run any CGI mode / Interpreted language script files, or connect to any web application server proxies, or manage processes in the system.

With Node PHP Embedded (PHPCGIJS), you can leverage the speed of node.js and run all of the widely available php scripts directly inside your node.js web application or site.

Installation

npm install phpcgijs --save

SECURITY NOTE:

  • The process shell module is security agnostic and is dependant on your code.
    • The package accesses the shell to run script executables using the node.js process module. Please consider your security risks based on your executable's/ script's security risks.
  • The proxy module is security agnostic and is dependant on your code.
    • The package has a LAN or WAN network proxy module AND does not create any proxies by its own - unless specified by you. Please consider your custom created proxy's security risks.
  • The package does not use Telemetry, nor Collect data Remotely, nor has Telemetry/Remote based Error collection on its own.
    • The package propogates errors for you to handle or collect errors/ data.

Library Features

Includes CGIJS Library as a dependancy

cgijs

API for cgijs: require("phpcgijs").cgijs

Usage as require("phpcgijs").cgijs inbuilt dependency library APIs


CGIJS is a all featured library to run any CGI mode / Interpreted language script files, or connect to any web application server proxies, or manage processes in the system.

CGIJS library:

  • Supports running any CGI / Interpreted Language scripts in any OS that runs node.js.
  • Supports both CGI executables as well as proxy to localhost/ remote /embedded servers using proxying of multiple protocols (http, websockets, tcp, udp, socks, ssh, ftp).
  • Supports managing processes like embedded server executables, embedded database executables, or any other embedded/ non-embedded executables
  • Supports working with shell, json, ini, csv, yaml, and xml internally

You can view more about cgijs at github.com/cgi-js or install it directly at npm cgijs

phpcgijs

API for cgi: require("phpcgijs").cgi

Usage as require("phpcgijs").cgi inbuilt dependency library APIs


To run php scripts with node js and express create the following script like below:

var express = require("express");
var php = require("./main");
// var php = require("phpcgijs");
var path = require("path");

var app = express();
var p = path.join("test/php");

// options are PHP-CGI command line options and can be found in documentation
// It can also be found in readme-php-options.txt (check for update in docs)
// options ignore -h and --help

app.use("/", php.cgi(p, { cgi_path: "/usr/bin/", options: { "-c": "/etc/php.ini" } }));

// 
// Following is the STRUCTURE for providing the declaration of paths and options:
//
// app.use("/expresspath", php.cgi("/path/to/phpscript.php", { "cgi_path":"to/php/cgi/path/php-cgi", options: { "-c": "/etc/php.ini" } }))
// 
// app.use("/", php.cgi(
//             "/path/to/phpscript.php",
//             { "options": {"-c": "/to/php/ini/path/php.ini"} }
//         ));
// 
// Following works without a local PHP-CGI path and tries to
//          use PHP-CGI installed in system by default:
// 
// app.use("/", php.cgi("/path/to/phpscript"));
// 
// Following uses a path in second argument defining the local copy of
//          PHP-CGI that you want to use for the application
// 
// app.use("/", php.cgi(
//             "/path/to/phpscript.php",
//             {
//                 "cgi_path":"to/php/cgi/path/php-cgi",
//                 "options": {"-c": "/to/php/ini/path/php.ini"}
//             }
//         ));
// 

app.listen(9090, "127.0.0.1");
console.log("Server listening at 9090!");

Explanation

The script will pipe all files that end in the .php extension through the php parser. All other files will be served as static content. Basic permalinks are supported but the support for them can probably be improved.

You can also use the inbuilt cgijs API using the following features using the require("phpcgijs").cgijs API.

NOTE:

PHPCGIJS was originally a fork of http://github.com/mkschreder/node-php. PHPCGIJS was later modified for making this library take dynamic PHP pathing, so that it can run without a PHP (or other interpreted language) distribution installed on a machine. PHPCGIJS can work with an embedded PHP binary distribution. PHPCGIJS was later added with CGIJS to make this library comprehensively support most scripting languages long with running any web application behind a proxy using a webserver.

Dependencies

Inbuilt phpcgijs .cgi usage


  • You need to have the interpreter installed in the system in order to use this extension.
  • Alternatively, You can specify the full path of locally available php-cgi path.
  • If custom path not specified in express, it tries to find the system installed php-cgi executable. If still unavailable, the server errors out.

Inbuilt phpcgijs .cgijs usage


Node CGI Embedded - run interpreted scripts that support cgi using nodejs - .init , .file API
  • [x] CGI file execution - Run any scripts that support CGI based serving/execution
Node Web Proxy - run web proxies using .proxy API
  • [x] Running Proxies - Run any host that serves a web app, using proxy (HTTP, UDP, TCP, Websockets, Socks) and supports websocket implementation in web proxies
Node Processes - Manage web servers, database processes, or other system processes or services using .process API
  • [x] Manage Processes or Services - Allows running and closing process Executables
CGIJS Functionality Details
  • [x] The script should support piping all files of below interpreted languages including Python (2.x, 3.x) - py, Perl (Version Independent) - plc, pld, pl, PHP (Version Independent) - php, Ruby (Version Independent) - rb, Node.js (Version Independent) - js, CGI files - cgi.
  • [x] The script should support piping all proxies of above languages and Jsp (With Tomcat, or any webserver as proxy) , Aspx (With IIS, Apache, or any webserver as proxy), Jsp and Aspx (With Tomcat, Nginx, and Apache embedded)
  • [x] Some sections are pending to be tested but should function normally

License

Copyright © 2019 - till it works Ganesh B for DesktopCGI [email protected]

The MIT License (MIT) - See LICENSE for further details.