代码之家  ›  专栏  ›  技术社区  ›  Alana Storm

内置Web服务器的PHP双输出

php
  •  0
  • Alana Storm  · 技术社区  · 6 年前

    我有一个小的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服务器的控制台。

    而这 几乎 发生——期待 这是一个测试 打印到stdout 两次 对于每个请求。有人知道会发生什么吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Stefan    6 年前

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

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

    php -S 127.0.0.1:8081 
    

    该命令启动当前工作目录内的WebServer,并将其设置为WebRoot。使用URL打开浏览器: http://127.0.0.1:8081/test.php

    可以找到有关内置Web服务器的更多详细信息 here .

        2
  •  0
  •   Alana Storm    6 年前

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

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

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

    /
    /favicon.ico
    

    第二个日志是从Web浏览器自动尝试获取 favicon.ico 文件。