首页 > 解决方案 > 如何显示 PHP 内部 web 服务器的介绍文本

问题描述

php -S localhost:8000 -t myPath myFile.php我实际上通过 PHP 文件使用命令启动了一个 PHP Web 内部 Web 服务器。

我想看到的:

PHP 7.3.11-1+ubuntu18.04.1+deb.sury.org+1 开发服务器于 2019 年 11 月 18 日星期一 12:04:52 开始

监听http://localhost:8000

文档根目录是 /var/www/html/perso/otra/web

按 Ctrl-C 退出。

当我在终端中键入此命令时,它会显示这些信息,但当它来自我的脚本时则不会。

我什么也没看见。当我通过 Ctrl+C 使用该函数停止服务器时,我成功做的就是将此输出放入一个文件中。proc_open

我想显示这些信息和...:

实现这一目标的最简单方法是什么?

我尝试了不同的功能,,,,但exec我不掌握最后一个。这是我尝试过的示例:systempassthrupopenproc_openproc_open

<?php
define('STD_IN', 0);
define('STD_OUT', 1);
define('STD_ERR', 2);
$process = proc_open(
  'php -S localhost:8000 -t ' . BASE_PATH . 'web/ ' . CORE_PATH . 'console/localServerInit.php',
  [
    STD_IN => ['pipe', 'r'],
    STD_OUT => ['pipe', 'w'],
    STD_ERR => ['file', BASE_PATH . 'logs/dev/localServerError.txt', 'a']
  ],
  $pipes,
  __DIR__,
  $_ENV
);

if (is_resource($process) === true)
{
  stream_set_blocking($pipes[0], 0);
  stream_set_blocking($pipes[1], 0);

  echo stream_get_contents($pipes[1]);
  fclose($pipes[0]);
  fclose($pipes[1]);

  $return_value = proc_close($process);
  echo "The commands returned $return_value", PHP_EOL;
}

echo不打印任何东西。如果我使用文件STD_OUT代替,我将在键入 Ctrl+C 时看到内容。

标签: php

解决方案


推荐阅读