In order to set project specific configuration options, simply add a php.ini file to your project, and then run the built-in server with this flag:
php -S localhost:8000 -c php.ini
This is especially helpful for settings that cannot be set at runtime (ini_set()).Вграден веб сервер
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Вграден веб сервер
Референца за `features.commandline.webserver.php` со подобрена типографија и навигација.
Вграден веб сервер
Овој веб-сервер е дизајниран да помогне во развојот на апликации. Може да биде корисен и за тестирање или за демонстрации на апликации што се изведуваат во контролирани средини. Не е наменет да биде целосно функционален веб-сервер. Не треба да се користи на јавна мрежа.
На CLI SAPI Овој веб-сервер е дизајниран да помогне во развојот на апликации. Исто така може да биде корисен за тестирање или за демонстрации на апликации што се извршуваат во контролирани средини. Не е наменет да биде целосно функционален веб-сервер. Не треба да се користи на јавна мрежа.
обезбедува вграден веб-сервер.
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.
Веб-серверот работи само еден процес со една нишка, така што PHP апликациите ќе се заглават ако барањето е блокирано. falseАко PHP датотека е дадена на командната линија кога се стартува веб-серверот, таа се третира како скрипта за „рутер“. Скриптата се извршува на почетокот на секое HTTP барање. Ако оваа скрипта врати
, тогаш бараниот ресурс се враќа како што е. Во спротивно, излезот на скриптата се враќа во прелистувачот.
.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, .png, .pps, .pptx, .qt, .svg, .swf, .tar, .text, .tif, .txt, .wav, .webm, .wmv, .xls, .xlsx, .xml, .xsl, .xsd, .zip
.
Стандардни MIME типови се враќаат за датотеки со екстензии: PHP_CLI_SERVER_WORKERS Од PHP 7.4.0, вградениот веб-сервер може да се конфигурира да форкира повеќе работници за да тестира код што бара повеќе истовремени барања до вградениот веб-сервер. Поставете го
Забелешка: променливата на околината на бројот на посакуваните работници пред да го стартувате серверот.
Забелешка: Оваа функција не е поддржана на Windows. За информации за употребата и опциите на PHP командната линија, стартувајте or човек phpphp --help
Ова experimental . Не сите опции ќе важат при стартување на веб-серверот. not функцијата е not наменета за продукциска употреба. Генерално, вградениот веб-сервер е
наменет за продукциска употреба.
$ cd ~/public_html $ php -S localhost:8000
Пример #1 Стартување на веб-серверот
PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011 Listening on localhost:8000 Document root is /home/me/public_html Press Ctrl-C to quit
After URI requests for http://localhost:8000/ and http://localhost:8000/myscript.html the terminal will show something similar to:
PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011 Listening on localhost:8000 Document root is /home/me/public_html Press Ctrl-C to quit. [Thu Jul 21 10:48:48 2011] ::1:39144 GET /favicon.ico - Request read [Thu Jul 21 10:48:50 2011] ::1:39146 GET / - Request read [Thu Jul 21 10:48:50 2011] ::1:39147 GET /favicon.ico - Request read [Thu Jul 21 10:48:52 2011] ::1:39148 GET /myscript.html - Request read [Thu Jul 21 10:48:52 2011] ::1:39149 GET /favicon.ico - Request read
Терминалот ќе прикаже:
Имајте предвид дека пред PHP 7.4.0, симболичките врски до статични ресурси не биле достапни на Windows, освен ако скриптата за рутер не ги обработувала.
$ cd ~/public_html $ php -S localhost:8000 -t foo/
Пример #1 Стартување на веб-серверот
PHP 5.4.0 Development Server started at Thu Jul 21 10:50:26 2011 Listening on localhost:8000 Document root is /home/me/public_html/foo Press Ctrl-C to quit
Пример #2 Стартување со специфична директориумска патека за документи
Во овој пример, барањата за слики ќе ги прикажат, но барањата за HTML-датотеки ќе прикажат „Добредојдовте во PHP“:
<?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>";
}
?>$ php -S localhost:8000 router.php
Пример #4 Проверка за користење на CLI веб-сервер
За повторно користење на скрипта за рутер на рамка за време на развој со CLI веб-сервер, а подоцна и со продукциски веб-сервер:
<?php
// router.php
if (php_sapi_name() == 'cli-server') {
/* route static assets and return false */
}
/* go on with normal index.php operations */
?>$ php -S localhost:8000 router.php
Пример #5 Ракување со неподдржани типови датотеки
Ако треба да послужите статичен ресурс чиј MIME тип не е поддржан од CLI веб-серверот, користете:
<?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;
}
?>$ php -S localhost:8000 router.php
Пример #6 Пристап до CLI веб-серверот од далечински машини
Можете да го направите веб-серверот достапен на портата 8000 за кој било интерфејс со:
$ php -S 0.0.0.0:8000
Вградениот веб-сервер не треба да се користи на јавна мрежа.
Белешки од корисници 8 белешки
It’s not mentioned directly, and may not be obvious, but you can also use this to create a virtual host. This, of course, requires the help of your hosts file.
Here are the steps:
1 /etc/hosts
127.0.0.1 www.example.com
2 cd [root folder]
php -S www.example.com:8000
3 Browser:
http://www.example.com:8000/index.php
Combined with a simple SQLite database, you have a very handy testing environment.I painfully experienced behaviour that I can't seem to find documented here so I wanted to save everyone from repeating my mistake by giving the following heads up:
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"
which starts server in ipv4 mode only.If your URI contains a dot, you'll lose the $_SERVER['PATH_INFO'] variable, when using the built-in webserver.
I wanted to write an API, and use .json ending in the URI-s, but then the framework's routing mechanism broke, and it took a lot of time to discover that the reason behind it was its router relying on $_SERVER['PATH_INFO'].
References:
https://bugs.php.net/bug.php?id=61286To output debugging information on the command line you can write output to php://stdout:
<?php
$path = $_SERVER["SCRIPT_FILENAME"];
file_put_contents("php://stdout", "\nRequested: $path");
echo "<p>Hello World</p>";
?>On Windows you may find useful to have a phpserver.bat file in shell:sendto with the folowing:
explorer http://localhost:8888
rem check if arg is file or dir
if exist "%~1\" (
php -S localhost:8888 -t "%~1"
) else (
php -S localhost:8888 -t "%~dp1"
)
then for fast web testing you only have to SendTo a file or folder to this bat and it will open your explorer and run the server.Listen on all addresses of IPv4:
php -S 0.0.0.0:80
Listen on all addresses of IPv6:
php -S [::0]:80To send environment variable as long as with PHP built-in web server, type like this.
~$ MYENV=dev php -d variables_order=EGPCS -S 0.0.0.0:8000
On PHP script we can check with this code.
<?php
echo getenv('MYENV'); // print dev