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_ALL
和display_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 服务器和路由器脚本中的语法错误的主要内容,如果未能解决你的问题,请参考以下文章