Run any PHP stuff within your browser.
The Browser PHP package offers a collection of commands for running PHP from the Node CLI or for launching a PHP server from Node. Perfect for running a Laravel project in CodeSandbox, for example.
This article provides an in-depth exploration of the package.
Warning
This package serves as a proof of concept and is currently under active development. We recommend exercising caution when using it.
npm install --save-dev browser-php
This package gives access to three binaries. php
and serve
from node_modules
, composer
from vendor
.
node node_modules/.bin/php
Or add script
in package.json
"scripts" : {
"php" : "php"
},
Example
npm run php -r "echo 'Hello Browser PHP World!';"
> Hello Browser PHP World!
node node_modules/.bin/serve
Or add script
in package.json
"scripts" : {
"serve" : "serve"
},
Example
npm run serve
> PHP server is listening on url http://localhost:2222
node node_modules/.bin/php --disable-functions vendor/bin/composer
Or add script
in package.json
"scripts" : {
"composer": "php --disable-functions vendor/bin/composer"
},
Example
npm run composer
> ______
> / ____/___ ____ ___ ____ ____ ________ _____
> / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
> / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
> \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
> /_/
> Composer version 2.7.2 2024-03-11 17:12:18
The scripts can be configured with environment variables
-
BROWSER_PHP_VERSION
: The PHP version you need | default :8.2
-
BROWSER_PHP_COMPOSER_VERSION
: The Composer executable version | default :2.7.2
-
BROWSER_PHP_COMPOSER_PATH
: The Composer executable path | default :vendor/bin
-
BROWSER_PHP_COMPOSER_NAME
: The Composer executable name | default :composer
-
BROWSER_PHP_SERVER_HOST
: The host name you need | default :http://localhost
-
BROWSER_PHP_SERVER_PORT
: The port you need | default :2222
-
BROWSER_PHP_SERVER_PATH
: The directory path you need | default :public
-
BROWSER_PHP_SERVER_DEBUG
: The debug mode you need | default :false
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.