PHP内置Web服务器中的双输出

时间:2018-09-10 16:50:35

标签: php

我有一个小的PHP程序

#File: test.php
<?php
echo "echo";
file_put_contents('php://stdout', 'this is a test' . PHP_EOL, FILE_APPEND);

我正在使用内置的PHP Web服务器(如果需要的话,通过自制软件安装的PHP 7.1.21)运行此程序。

php -S 127.0.0.1:8081 test.php

我的期望是,通过http://127.0.0.1:8081请求一个网页,PHP将把echo单词回显到浏览器,PHP将把句子this is a test回响。到运行内置Web服务器的控制台。

这几乎发生了 -期望每个请求将this is a test打印到标准输出两次。有人知道会发生什么吗?

2 个答案:

答案 0 :(得分:1)

启动内置Web服务器的方式不正确。您在最后添加了测试test.php文件,这意味着test.php文件应充当路由文件。

只需使用以下命令启动内置Web服务器:

php -S 127.0.0.1:8081 

该命令在当前工作目录内启动Web服务器,并将其设置为Webroot。使用以下网址打开浏览器:http://127.0.0.1:8081/test.php

有关内置网络服务器的更多详细信息,请参见here

答案 1 :(得分:0)

我能够通过让程序记录以下内容来解决此问题

file_put_contents('php://stdout', $_SERVER['REQUEST_URI'] . PHP_EOL, FILE_APPEND);

并在控制台输出中看到以下内容

/
/favicon.ico

第二个日志来自网络浏览器,该日志自动尝试获取favicon.ico文件。