打印东西在PHP内置Web服务器(Print something in PHP built-in w

2019-07-18 06:28发布

在蟒蛇内置的Web服务器时使用print的功能,它打印在终端结果...

例如:

Django version 1.3.4, using settings 'parsicore.settings'
Development server is running at http://0.0.0.0:8000/
Using the Werkzeug debugger (http://werkzeug.pocoo.org/)
Quit the server with CONTROL-C.


127.0.0.1 - - [16/Jan/2013 02:02:08] "GET / HTTP/1.1" 200 -
hello ... print 1 2 3 

如何打印像这样在PHP内置的Web服务器?

比如我要打印$ _ POST的终端。 我用php -S 127.0.0.1:3000用于运行PHP的内置Web服务器。

Answer 1:

将内置于PHP 5.4+开发网络服务器并不在你所希望的方式工作。 也就是说,它不是一个PHP的过程,你不能为你运行代码。

它的设计从指定的目录服务PHP应用程序和内容。 服务器进程的输出是访问日志 。 您可以写信给使用日志error_log功能,具有作为值4 message_type 。 因此,从理论上讲,你可以这样做

ob_start();
var_dump($_POST);
error_log(ob_get_clean(), 4);

这听起来像你想进行一些调试。 你应该用真正的调试工具 ,而不是拼凑在一起的东西。



Answer 2:

只是管你的数据是error_log():

error_log(print_r($_REQUEST, true)); 



Answer 3:

PHP内置服务器写入输出到php://stdout流,这意味着你可以输出任何东西,但是这应该只用于调试。

这里是你如何可以实现写入服务器控制台的结果,一个简单的例子:

<?php declare(strict_types=1);


/**
 * This is for development purpose ONLY !
 */
final class ServerLogger {

    /**
     * send a log message to the STDOUT stream.
     *
     * @param array<int, mixed> $args
     *
     * @return void
     */
    public static function log(...$args): void {
        foreach ($args as $arg) {
            if (is_object($arg) || is_array($arg) || is_resource($arg)) {
                $output = print_r($arg, true);
            } else {
                $output = (string) $arg;
            }

            fwrite(STDOUT, $output . "\n");
         }
    }
}

// usage example : 
ServerLogger::log('Hello, world!');
// outputting an array : 
ServerLogger::log($_SERVER);


文章来源: Print something in PHP built-in web server