У меня слишком простое php-приложение, которое я хочу запустить через встроенный php-сервер и которое находится в моей виртуальной машине на моем компьютере с Windows:
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require '../vendor/autoload.php';
$app = new \Slim\App();
$app->get('/', function (Request $req, Response $res, $arg = []) {
return 'hello world!!';
});
$app->run();
Структура моего проекта
tree -I vendor
.
|-- cache
| `-- 6a
| `-- 532bg9987gt23f4356546poo999vvb234234.php
|-- composer.json
|-- composer.lock
|-- public
| `-- js
| `-- app.js
|-- routes
| `-- web.php
`-- views
`-- templates
`-- index.html
7 directories, 7 files
Когда я запускаю curl изнутри моей виртуальной машины, это очевидно работает:
php -S localhost:9899&
curl localhost:9899/routes/web.php
Hello world!!
Проблема в том, что когда я пытаюсь подключиться к этому серверу через браузер (Windows Machine), я получаю
This site can’t be reached
Хотя это не работает для моего встроенного сервера php, оно отлично работает для двух других проектов, разработанных с nodejs которые находятся на той же виртуальной машине, что и PHP один.
Почему я не могу получить доступ к встроенному серверу php особенно nodejs встроенный сервер доступен?
Вы привязываете свой сервер к localhost
, Это только слушать на localhost
сетевой интерфейс. Он не будет доступен за пределами этой машины.
Скажите ему прослушивать ваш внешний IP-адрес.
В качестве альтернативы, скажи это слушать все сетевые интерфейсы:
php -S 0.0.0.0:9889
Других решений пока нет …