在PHP内置的Web服务器中打印一些内容。
在PHP内置的Web服务器中打印一些内容。
在Python内置的Web服务器中,当在函数中使用print
时,它会在终端中打印结果...
例如:
Django版本1.3.4,使用设置'parsicore.settings' 开发服务器正在运行,地址为http://0.0.0.0:8000/ 使用Werkzeug调试器(http://werkzeug.pocoo.org/) 使用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服务器。
在PHP内置的服务器中,可以使用php://stdout
流来输出内容,但这仅用于调试目的。下面是一个快速示例,演示如何将内容输出到服务器控制台:
<?php declare(strict_types=1); /** * 仅用于开发目的! */ final class ServerLogger { /** * 将日志消息发送到STDOUT流。 * * array<int, mixed> $args * * 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"); } } } // 使用示例: ServerLogger::log('Hello, world!'); // 输出一个数组: ServerLogger::log($_SERVER);
这正是我在寻找的内容!但在PHP 7.4中,此函数会抛出一个错误异常(E_WARNING),错误消息为“使用未定义的常量STDOUT - 假设为'STDOUT'(这将在未来的PHP版本中抛出错误)”。
从上述内容中可以整理出以下问题的原因和解决方法:
问题:如何在PHP内置的Web服务器中打印输出内容?
原因:PHP内置的Web服务器并不是一个PHP进程,不能直接运行代码。它的设计目的是用于提供PHP应用程序和内容的服务,并且输出结果是访问日志。
解决方法:可以使用error_log函数将输出内容写入访问日志。具体方法如下:
ob_start(); var_dump($_POST); error_log(ob_get_clean(), 4);
这样就可以将输出内容写入访问日志中。但是需要注意的是,这种方法仅适用于调试目的,实际开发中应该使用真正的调试工具来进行调试。
虽然无法替代真正的调试工具,但是在开发环境中将日志输出到控制台而不是文件中也是一个有趣的方法。
问题出现的原因是需要在使用PHP内置的Web服务器时,在服务器日志中打印一些内容。解决方法是使用error_log()
函数将数据输出到服务器日志中。
在PHP中,可以使用error_log()
函数将数据写入服务器的错误日志。通过将要打印的数据作为print_r()
函数的参数,并将第二个参数设置为true
,可以将数据以字符串的形式返回。然后,将该字符串作为error_log()
函数的参数,将数据写入服务器日志。
以下是一个示例代码,演示了如何在PHP内置的Web服务器中打印数据到服务器日志中:
error_log(print_r($_REQUEST, true));
上述代码将打印$_REQUEST
数组中的内容到服务器的错误日志中。可以根据需要将其他变量或数据结构传递给print_r()
函数进行打印。
使用error_log()
函数将数据输出到服务器日志中,可以方便地调试和跟踪代码的执行过程,以及查看请求中的数据。这对于开发和调试Web应用程序非常有用。