PHP 内置 Web 服务器和路由器脚本中的语法错误

Posted

技术标签:

【中文标题】PHP 内置 Web 服务器和路由器脚本中的语法错误【英文标题】:PHP Built-in web server and syntax error in a router script 【发布时间】:2021-03-22 18:34:11 【问题描述】:

我使用php Built-in web server 进行测试。例如,使用一个简单的路由器脚本:

<?php
echo 'Hello world';

使用php -S localhost:8000 router.php 启动它。有效。

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

<?php
echo 'Hello world'

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

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

我在php.ini 中将错误报告设置为E_ALL。我将display_errors 设置为On

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

【问题讨论】:

从技术上讲,这不是语法错误。除非该行之后的脚本中有更多代码。 您确定您在正确 php.ini 中进行了设置吗? 是的。甚至在路由器脚本中显示了phpinfo(),并确认设置了E_ALLdisplay_errors 【参考方案1】:

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

可以做一个简单的解决方法,在运行php-builtin-server 之前用php -l 词法检查php 文件。为方便起见,请为其创建一个批处理文件。

窗口

使用内容创建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 执行它

希望对你有帮助

【讨论】:

以上是关于PHP 内置 Web 服务器和路由器脚本中的语法错误的主要内容,如果未能解决你的问题,请参考以下文章

PHP相关

PHP_01之PHP概述数据语法

tp6内置服务器性能如何

2.php语言基础

基础 PHP 语法

linux下编译安装php各种报错大集合