Подтвердить что ты не робот

Печатать что-то на встроенном веб-сервере PHP

В встроенном веб-сервере python при использовании 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?

например, я хочу напечатать $_POST в терминале. Я использую php -S 127.0.0.1:3000 для запуска встроенного веб-сервера PHP.

4b9b3361

Ответ 1

Веб-сервер встроенный в PHP 5.4+, не работает так, как вы хотите. То есть, это не процесс PHP, и вы не можете запустить его для вас.

Он предназначен для обслуживания приложений и контента PHP из указанного каталога. Результатом процесса сервера является журнал доступа. Вы можете записать в журнал с помощью функции error_log со значением 4 в качестве message_type. Итак, теоретически вы можете сделать что-то вроде

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

Похоже, вы пытаетесь выполнить некоторую отладку. Вы должны использовать реальные инструменты для отладки вместо того, чтобы что-то помогать.

Ответ 2

Просто соедините свои данные с error_log():

error_log(print_r($_REQUEST, true));

Ответ 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);