1

我正在使用PHP 内置 Web 服务器进行测试。例如,使用简单的路由器脚本:

<?php
echo 'Hello world';

启动它php -S localhost:8000 router.php。作品。

现在,假设我在路由器脚本中犯了语法错误(例如缺少分号):

<?php
echo 'Hello world'

并使用相同的命令启动开发服务器。

在浏览localhost:8000器中访问给我 404 错误:在此服务器上找不到请求的资源 /。. 它让我完全不知道问题或语法错误的位置。我在其中启动 Web 服务器的终端也没有显示任何错误(404 除外)。

我将错误报告设置E_ALLphp.ini. 我有display_errors设置为On.

在这种情况下在哪里查找错误消息?如何强制 PHP 将此类错误呈现给浏览器而不是 404 错误页面?

4

1 回答 1

1

经过反复试验,我得出结论,php-builtin-server不会在任何文件中记录错误,而是直接打印到控制台并发送到浏览器,前提是php 文件不包含任何词法错误。我找不到任何关于此的文档,所以请随时纠正我..

可以做一个简单的解决方法,php -l在运行前用词法检查 php 文件php-builtin-server。为了使事情更容易,为它创建一个批处理文件。

视窗

使用以下内容创建php-srv.bat(或任何有效名称):

php -l %1 | find /i "No syntax errors"
if not errorlevel 1 (
   php -S localhost:8000 %1
)

执行它php-srv route.php

linux

使用以下内容创建php-srv.sh(或任何有效名称):

if php -l $1 | grep 'No syntax errors detected in'; then
    php -S localhost:8000 $1
fi

使其可执行,chmod然后执行./php-srv.sh route.php

希望有帮助

于 2020-12-11T13:56:28.163 回答