Как запустить приложение PHP на порте, а не в папке htdocs? - PullRequest
0 голосов
/ 04 октября 2018

Когда мы запускаем приложение nodejs, оно связывается с портом на машине, откуда мы можем получить к нему доступ.Есть ли подобный способ запустить приложение PHP, а не просто перейти в папку по умолчанию, которая находится в папке xampp htdocs?

Я бы хотел не хранить свои файлы в папке htdocs.

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Начиная с PHP 5.4.0, вы можете запустить свой собственный сервер с Встроенный веб-сервер PHP

Начиная с PHP 5.4.0, CLI SAPI предоставляет встроенный-в веб-сервере.

Веб-сервер запускает только один однопоточный процесс , поэтому приложения PHP останавливаются, если запрос заблокирован.

Пример для:
- запускает только один однопоточный процесс - означает, что при попытке cURL или file_get_contents , или сделайте любой запрос в том же домене, в котором вы попадете в цикл и застряли на сервере, потому что PHP синхронизирован, а этот однопоточный.

Пример из документации

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 localhost:8000 router.php, чтобы запустить сервер.

Я бы не хотел хранить свои файлы в папке htdocs.

Чтобы указать другой корень документа, добавьте аргумент -t:

php -S localhost:8000 -t /path/to/project router.php

Я недавно написал пакет nodejs node-php-awesome-server , цель которого - сделать это, вы можете запустить веб-сервер nodejs, который отображает php, устанавливать переменные окружения php, изменять настройки ini ...все еще использую это сегодня в комплекте с промежуточным программным обеспечением webpack для рендеринга на стороне сервера.

Если вас сейчас интересует только php,Если у них есть встроенный сервер, если этот маршрутизатор по умолчанию не покрывает то, что вам нужно, я написал маршрутизатор для решения нескольких фреймворков PHP-Встроенный веб-сервер-Маршрутизатор

0 голосов
/ 04 октября 2018

Вы сталкиваетесь с несколькими различными проблемами.

PHP традиционно выполняется через CGI или демон FastCGI (PHP-FPM).В этих случаях сам веб-сервер (например, Nginx или Apache) прослушивает порт и связывается с PHP через эти протоколы.Большинство приложений Node.js, обслуживающих запросы HTTP, пропускают маршрут CGI и FastCGI и сами запускают демон HTTP.Обычно все еще имеется надлежащий веб-сервер для обработки буферизации для медленных клиентов и кэширования.

Способ думать об этом заключается в том, что для большинства (конечно, не всех) узлов.js приложения, вместо FastCGI используется HTTP.(И, в качестве бонуса, если вы хотите просто подключить клиентов напрямую к Node.js, вы можете полностью отказаться от необходимости веб-сервера.)

Теперь перейдем к структуре каталогов приложения ...Лучше всего оставлять код приложения вне корня документа .Один из действительно простых способов сделать это - иметь один файл, такой как index.php, который получает все маршруты (настроенные с помощью правил перезаписи на вашем веб-сервере), который затем загружает и выполняет соответствующий код.На диске остальная часть этого кода приложения находится за пределами корня документа и может быть загружена с помощью простого require() / include().

...