Print something in PHP built-in web server

强颜欢笑 提交于 2019-11-30 12:33:41

问题


In python built-in web server when use print in function, it prints result in terminal ...

for example:

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 

How can I print something like this in PHP built-in web server?

for example I want print $_POST in terminal. I use php -S 127.0.0.1:3000 for run PHP built-in web server.


回答1:


The development web server built in to PHP 5.4+ does not work in the way you want. That is, it's not a PHP process, and you can't have it run code for you.

It's designed to serve PHP applications and content from the specified directory. The output of the server process is the access log. You can write to the log using the error_log function, with a value of 4 as the message_type. So, in theory, you could do something like

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

It sounds like you're trying to perform some debugging. You should be using real debugging tools instead of cobbling something together.




回答2:


Just pipe your data to error_log():

error_log(print_r($_REQUEST, true));




回答3:


php built-in server writes output to the php://stdout stream , which mean you can output anything to it, but this should only be used for debugging.

here's a quick example of how can you achieve the result of writing to the server console :

<?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);


来源:https://stackoverflow.com/questions/14353767/print-something-in-php-built-in-web-server

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!