
Product
Introducing Custom Tabs for Org Alerts
Create and share saved alert views with custom tabs on the org alerts page, making it easier for teams to return to consistent, named filter sets.
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); // npm install --save-dev load-grunt-tasks
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 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 or 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.
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
Create and share saved alert views with custom tabs on the org alerts page, making it easier for teams to return to consistent, named filter sets.

Product
Socket’s Rust and Cargo support is now generally available, providing dependency analysis and supply chain visibility for Rust projects.

Security News
Chrome 144 introduces the Temporal API, a modern approach to date and time handling designed to fix long-standing issues with JavaScript’s Date object.