Local Php Server For Mac



When starting php -S on a mac (in my case macOS Sierra) to host a local server, I had trouble with connecting from legacy Java. As it turned out, if you started the php server with 'php -S localhost:80' the server will be started with ipv6 support only! To access it via ipv4, you need to change the start up command like so: 'php -S 127.0.0.1:80'.

Built-in web server

I started working for a new company about 2 months ago & their entire team was using various setups for local dev and were always encountering problems. Setting up a new project locally was always a nightmare for them due to mysql version conflicts, having to change php versions, etc. UPDATES FOR DEVSERVER 17.x 08-14 WordPress 5.508-11 PHP 7.4.9 x64/x8608-11 Offline PHP Manual - English08-11 Offline PHP Manual - French08-11 Offline PHP Manual - Brazilian Portuguese08-06 PHP 8.0.0 beta 1 x64/x8608-06 WordPress 5.5 RC208-04 Nginx 1.18.007-24 PHP 8.0.0 alpha 3 x64/x8607-23 Laravel 7.20.0 & Laravel Manager 1.0. MAMP installs a local server environment in a matter of seconds on your Windows or macOS computer. MAMP comes free of charge, and is easily installed. MAMP will not compromise any existing Apache installation already running on your system.

Local Php Server For MacWarning

This web server is designed to aid application development. It may also be useful for testing purposes or for application demonstrations that are run in controlled environments. It is not intended to be a full-featured web server. It should not be used on a public network.

As of PHP 5.4.0, the CLISAPI provides a built-in web server.

The web server runs only one single-threaded process, so PHP applications will stall if a request is blocked.

URI requests are served from the current working directory where PHP was started, unless the -t option is used to specify an explicit document root. If a URI request does not specify a file, then either index.php or index.html in the given directory are returned. If neither file exists, the lookup for index.php and index.html will be continued in the parent directory and so on until one is found or the document root has been reached. If an index.php or index.html is found, it is returned and $_SERVER['PATH_INFO'] is set to the trailing part of the URI. Otherwise a 404 response code is returned.

If a PHP file is given on the command line when the web server is started it is treated as a 'router' script. The script 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.

Standard MIME types are returned for files with extensions: .3gp, .apk, .avi, .bmp, .css, .csv, .doc, .docx, .flac, .gif, .gz, .gzip, .htm, .html, .ics, .jpe, .jpeg, .jpg, .js, .kml, .kmz, .m4a, .mov, .mp3, .mp4, .mpeg, .mpg, .odp, .ods, .odt, .oga, .ogg, .ogv, .pdf, .pdf, .png, .pps, .pptx, .qt, .svg, .swf, .tar, .text, .tif, .txt, .wav, .webm, .wmv, .xls, .xlsx, .xml, .xsl, .xsd, and .zip.

Changelog: Supported MIME Types (file extensions)
VersionDescription
5.5.12 .xml, .xsl, and .xsd
5.5.7 .3gp, .apk, .avi, .bmp, .csv, .doc, .docx, .flac, .gz, .gzip, .ics, .kml, .kmz, .m4a, .mp3, .mp4, .mpg, .mpeg, .mov, .odp, .ods, .odt, .oga, .pdf, .pptx, .pps, .qt, .swf, .tar, .text, .tif, .wav, .wmv, .xls, .xlsx, and .zip
5.5.5 .pdf
5.4.11 .ogg, .ogv, and .webm
5.4.4 .htm and .svg
Changelog
VersionDescription
7.4.0 You can configure the built-in webserver to fork multiple workers in order to test code that requires multiple concurrent requests to the built-in webserver. Set the PHP_CLI_SERVER_WORKERS environment variable to the number of desired workers before starting the server. This is not supported on Windows.
Warning

This experimental feature is not intended for production usage. Generally, the built-in Web Server is not intended for production usage.

Example #1 Starting the web server

The terminal will show:

After URI requests for http://localhost:8000/ and http://localhost:8000/myscript.html the terminal will show something similar to:

Note that prior to PHP 7.4.0, symlinked statical resources have not been accessible on Windows, unless the router script would handle these.

Example #2 Starting with a specific document root directory

Local Php Server For Mac

The terminal will show:

Example #3 Using a Router Script

In this example, requests for images will display them, but requests for HTML files will display 'Welcome to PHP':

Local Php Server Windows

For
<?php
// router.php
if (preg_match('/.(?:png|jpg|jpeg|gif)$/', $_SERVER['REQUEST_URI'])) {
return
false; // serve the requested resource as-is.
} else {
echo
'<p>Welcome to PHP</p>';
}
?>
Mac

Example #4 Checking for CLI Web Server Use

To reuse a framework router script during development with the CLI web server and later also with a production web server:

<?php
// router.php
if (php_sapi_name() 'cli-server') {
/* route static assets and return false */
}
/* go on with normal index.php operations */
?>

Example #5 Handling Unsupported File Types

If you need to serve a static resource whose MIME type is not handled by the CLI web server, use:

Local php server for mac catalina
<?php
// router.php
$path = pathinfo($_SERVER['SCRIPT_FILENAME']);
if (
$path['extension'] 'el') {
header('Content-Type: text/x-script.elisp');
readfile($_SERVER['SCRIPT_FILENAME']);
}
else {
return
FALSE;
}
?>

Example #6 Accessing the CLI Web Server From Remote Machines

You can make the web server accessible on port 8000 to any interface with:

Best Php Server

Warning

The built-in Web Server should not be used on a public network.