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

问题描述 投票:0回答:2

我有一个小的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请求web页面,PHP将echo这个词回显给浏览器,PHP将把this is a test这个句子回显到运行内置Web服务器的控制台。

这几乎发生了 - 期望this is a test每次请求打印到stdout两次。有谁知道可能会发生什么?

php
2个回答
1
投票

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

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

php -S 127.0.0.1:8081 

该命令启动当前工作目录中的Web服务器并将其设置为webroot。使用url:http://127.0.0.1:8081/test.php打开浏览器

有关内置网络服务器的更多细节可以在here找到。


0
投票

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

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

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

/
/favicon.ico

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

© www.soinside.com 2019 - 2024. All rights reserved.