PHP-сервер на локальній машині?


161

Я намагаюся створити PHP-сайт і хочу перевірити свої PHP-файли, не завантажуючи їх на свій хост. В основному тестую їх на власній машині, перш ніж завантажувати їх. Як це зробити?


1
використовувати XAMPP та встановити PHP-сервер. Іноді якщо скайп використовує порт 80 і 443, сервер apache не запуститься. Повне рішення надається тут feelzdroid.com/2015/12/install-php-server-local-machine.html
Наруто

Відповіді:



380

PHP 5.4 і пізніші версії мають вбудований веб-сервер наші дні.

Ви просто запускаєте команду з терміналу:

cd path/to/your/app
php -S 127.0.0.1:8000

Тоді у вашому браузері перейдіть до програми, http://127.0.0.1:8000і ваша система повинна працювати. (Для цього повинен бути файл index.php або index.html.)

Ви також можете додати простий маршрутизатор

<?php
// router.php
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
    return false;    // serve the requested resource as-is.
} else { 
    require_once('resolver.php');
}
?>

А потім запустіть команду

php -S 127.0.0.1:8000 router.php

Список літератури:


9
Якщо хтось цікавився, -S та посилання на інші команди можна знайти за посиланням нижче. Зокрема, -S означає "Запуск із вбудованим веб-сервером". php.net/manual/en/features.commandline.options.php
calipoop

але що з Базами даних, у яких вона повинна мати місце для зберігання!
Юсеф Алтаф

1
@YousefAltaf ОП не вказує погоду чи не вони хотіли використовувати базу даних. Вони попросили сервера PHP, і це просто сервер PHP. Якщо ви хочете запустити сервер MYSQL або PostGres, то це вже інше питання, і ви можете налаштувати свою програму PHP для використання вказаного сервера. Крім того, для швидкої розробки, SQLITE DB повинен робити.
GardenRouteGold

1
PHP Вбудований веб-сервер не підтримує паралельний запит: The web server runs a only one single-threaded process, so PHP applications will stall if a request is blocked.. Це може спричинити певні проблеми з продуктивністю.
vikyd

1
@vikyd це не означає для повноцінного розробки додатків, це просто швидкий спосіб перевірити / налагодити функції чи код IMHO.
GardenRouteGold

39

Це простий, впевнений спосіб запуску локального сервера PHP:

php -S 0.0.0.0:<PORT_NUMBER>

Де PORT_NUMBER - ціле число від 1024 до 49151

Приклад: php -S 0.0.0.0:8000

Примітки:

  1. Якщо ви використовуєте localhostзамість цього, 0.0.0.0ви можете потрапити на помилку, відхилену у з'єднанні.

  2. Якщо ви хочете зробити веб-сервер доступним для будь-якого інтерфейсу, використовуйте 0.0.0.0.

  3. Якщо запит URI не вказує файл, то повертаються або index.php, або index.html у вказаному каталозі.

З огляду на наступний файл (router.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 0.0.0.0:8000 router.php

... і перейдіть у своєму браузері на http: // localhost: 8000 /, і буде показано наступне:

Welcome to PHP

Довідка:

Вбудований веб-сервер


4
Дякую за пораду щодо 0.0.0.0, що це за магічне виправлення - слід включити до прийнятої відповіді чи чогось іншого ...
calipoop

14

Я часто використовую наступну команду для спінінгу моєї програми PHP Laravel:

$ php artisan serve --port=8080
or
$ php -S localhost:8080 -t public/

Вгорі команда: - Artisan - це інтерфейс командного рядка, включений до Laravel, який використовують служать для виклику вбудованих в PHP сервері

Запуск із вбудованим веб-сервером.

 php -S <addr>:<port> -T

Тут
-S: переключиться на запуск із вбудованим веб-сервером.
-T: Переключити, щоб вказати корінь документа для вбудованого веб-сервера.


8

Я використовую WAMP . Один простий майстер встановлення, тонни модулів для Apache та PHP заздалегідь налаштовані та легко включати та вимикати, щоб відповідати віддаленій конфігурації.


7

Якщо ви хочете отримати універсальний стек локальної розробки для будь-якої операційної системи, де ви можете вибрати різні версії PHP, MySQL та веб-сервера, а також не боїтеся використовувати Docker, ви можете піти на Devilbox .

Devilbox - це сучасний і настроюваний докерський стек PHP, що підтримує повний LAMP та MEAN та працює на всіх основних платформах. Основна мета - легко перемикати та комбінувати будь-яку версію, необхідну для місцевого розвитку. Він підтримує необмежену кількість проектів, для яких vhosts та записи DNS створюються автоматично. До ваших послуг також будуть послуги загального користування електронною поштою та популярні інструменти розробки. Конфігурація не потрібна, оскільки все відбувається заздалегідь з масовим віртуальним хостингом.

Початок роботи та роботи досить просто:

# Get the devilbox
$ git clone https://github.com/cytopia/devilbox
$ cd devilbox

# Create docker-compose environment file
$ cp env-example .env

# Edit your configuration
$ vim .env

# Start all containers
$ docker-compose up

чортовий ящик

Посилання:





1

Використовуйте Apache Friends XAMPP . Він налаштує HTTP-сервер Apache, PHP 5 і MySQL 5 (наскільки я знаю, можливо, є щось більше, ніж це). Вам не потрібно знати, як налаштувати apache (або будь-який з модулів) для його використання.

У вас буде каталог htdocs, який Apache буде обслуговувати (доступний за адресою http: // localhost / ) і повинен мати змогу помістити туди ваші PHP файли. З моєю установкою це знаходиться на C: \ xampp \ htdocs.


1

Якщо у вас локальна машина з правильним програмним забезпеченням: веб-сервер із підтримкою PHP, немає жодної причини, чому ви не можете зробити так, як ви описуєте.

Я зараз роблю це з XAMPP на машині Windows XP і (вдома) з Kubuntu та стеком LAMP.



1

AppServ - це невелика програма для запуску:

  • Апач
  • PHP
  • MySQL
  • phpMyAdmin

Це також дасть вам кнопку запуску та зупинки для Apache. Що мені здається дуже корисним.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.