我有一个太基本的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
当我从我的VM中运行curl时,它显然有效:
php -S localhost:9899&
curl localhost:9899/routes/web.php
Hello world!!
问题是当我尝试从浏览器(Windows机器)连接到此服务器时,我得到了
This site can’t be reached
虽然这对我的php内置服务器不起作用,但它适用于使用nodejs开发的另外两个与php一个在同一个VM上的项目。
为什么我无法访问php内置服务器,特别是nodejs内置服务器可以访问?
答案 0 :(得分:4)
您将服务器绑定到localhost
。它只是在localhost
网络接口上侦听。它无法在该机器外部访问。
告诉它听取您面向外部的IP地址。
或者,告诉它听所有网络接口:
php -S 0.0.0.0:9889