
Product
Introducing Supply Chain Attack Campaigns Tracking in the Socket Dashboard
Campaign-level threat intelligence in Socket now shows when active supply chain attacks affect your repositories and packages.
Start a PHP-server
Pretty much a drop-in replacement for grunt-contrib-connect. Useful for eg. developing PHP projects or running tests on it.
Uses the built-in server in PHP 5.4.0+.
Doesn't have a middleware option as grunt-contrib-connect does.
$ npm install --save-dev grunt-php
require('load-grunt-tasks')(grunt);
grunt.initConfig({
php: {
dist: {
options: {
port: 5000
}
}
}
});
grunt.registerTask('default', ['php']);
grunt.initConfig({
php: {
test: {
options: {
keepalive: true,
open: true
}
}
}
});
grunt.registerTask('test', ['php', 'mocha']);
grunt.initConfig({
php: {
dist: {
options: {
hostname: '127.0.0.1',
port: 9000,
base: 'dist', // Project root
keepalive: false,
open: false
}
}
},
browserSync: {
dist: {
bsFiles: {
src: [
// Files you want to watch for changes
]
},
options: {
proxy: '<%= php.dist.options.hostname %>:<%= php.dist.options.port %>',
watchTask: true,
notify: true,
open: true,
logLevel: 'silent',
ghostMode: {
clicks: true,
scroll: true,
links: true,
forms: true
}
}
}
},
watch: {
// Your watch tasks
}
});
grunt.registerTask('serve', [
'php:dist', // Start PHP Server
'browserSync:dist', // Using the PHP instance as a proxy
'watch' // Any other watch tasks you want to run
]);
grunt.initConfig({
php: {
watch: {}
}
});
grunt.registerTask('phpwatch', ['php:watch', 'watch']);
grunt.initConfig({
php: {
dist: {
options: {
directives: {
'error_log': require('path').resolve('logs/error.log')
}
}
}
}
});
grunt.registerTask('default', ['php']);
Type: number
Default: 8000
The port on which you want to access the webserver. Task will fail if the port is already in use. Use the special value ? to use a system-assigned port.
Type: string
Default: '127.0.0.1' (Usually the same as localhost)
The hostname the webserver will use.
Use 0.0.0.0 if you want it to be accessible from the outside.
Type: string
Default: '.'
From which folder the webserver will be served. Defaults to the directory of the Gruntfile.
Type: boolean
Default: false
Keep the server alive indefinitely. Any task specified after this will not run.
This option can also be enabled ad-hoc by running the task like grunt php:targetname:keepalive
Type: boolean | string
Default: false
Open a browser when task is triggered.
Can be one of the following:
true: opens the default server URL ('http://' + hostname + port)Type: string
Optionally specify the path to a router script that is run at the start of each HTTP request. If this script returns false, then the requested resource is returned as-is. Otherwise the script's output is returned to the browser.
Example router script:
<?php
// router.php
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
return false; // serve the requested resource as-is
} else {
echo "<p>Thanks for using grunt-php :)</p>";
}
?>
Type: string
Default: 'php'
Path to the PHP binary. Useful if you have multiple versions of PHP installed.
Type: string
Default: Built-in php.ini
Path to a custom php.ini config file.
Type: boolean
Default: false
Suppress output produced by the PHP-server.
Type: object
Default: {}
Add custom ini directives.
Type: object
Default: {}
Set environment variables for the PHP process.
MIT © Sindre Sorhus
FAQs
Start a PHP server
The npm package grunt-php receives a total of 54 weekly downloads. As such, grunt-php popularity was classified as not popular.
We found that grunt-php demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Campaign-level threat intelligence in Socket now shows when active supply chain attacks affect your repositories and packages.

Research
Malicious PyPI package sympy-dev targets SymPy users, a Python symbolic math library with 85 million monthly downloads.

Security News
Node.js 25.4.0 makes require(esm) stable, formalizing CommonJS and ESM compatibility across supported Node versions.