2

我有一个太基本的 php 应用程序,我想通过内置的 php 服务器运行它,它存在于我的 Windows 机器的 VM 中:

<?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 机器)连接到该服务器时,我得到

This site can’t be reached

虽然这不适用于我的 php 内置服务器,但它非常适用于使用位于同一 VM 上。

为什么我无法访问 php 内置服务器,尤其是可以访问内置服务器?

4

1 回答 1

4

您正在将服务器绑定到localhost. 它只在localhost网络接口上监听。在该机器之外将无法访问它。

告诉它改为侦听您面向外部的 IP 地址。

或者,告诉它监听所有网络接口:

php -S 0.0.0.0:9889
于 2017-09-12T09:29:35.207 回答