python組み込みの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
for run PHP組み込みのWebサーバー。
PHP 5.4 + に組み込まれている開発用Webサーバーは、希望どおりに機能しません。つまり、PHP =プロセス。コードを実行することはできません。
指定されたディレクトリからPHPアプリケーションおよびコンテンツを提供するように設計されています。サーバープロセスの出力はaccess logです。あなたcanerror_log
関数を使用して、4の値をmessage_type
としてログに書き込むことができます。したがって、理論的には、何かのようなもの
ob_start();
var_dump($_POST);
error_log(ob_get_clean(), 4);
デバッグを実行しようとしているようです。一緒に何かをコブリングする代わりに、 実際のデバッグツール を使用する必要があります。
データをerror_log()にパイプするだけです:
error_log(print_r($_REQUEST, true));
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);