Распечатать что-то в 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.
3 ответов
на разработка веб-сервера, встроенного в PHP 5.4+ не работает так, как вы хотите. То есть, это не процесс PHP, и вы не можете запустить его для вас.
Он предназначен для обслуживания PHP-приложений и контента из указанного каталога. Выводом серверного процесса является лог. Вы can запись в журнал с помощью error_log
функция, со значением 4 как message_type
. Итак, теоретически, вы может сделать что-то вроде
ob_start();
var_dump($_POST);
error_log(ob_get_clean(), 4);
похоже, вы пытаетесь выполнить некоторую отладку. Вы должны использовать реальные инструменты отладки вместо того, чтобы что-то сколачивал.
PHP встроенный сервер записывает выходные данные в php://stdout
stream , что означает, что вы можете выводить на него что угодно, но это должно использоваться только для отладки.
вот краткий пример того, как вы можете достичь результата записи на консоль сервера :
<?php
/**
* This is for development purpose ONLY !
*/
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);