问题标签 [php-builtin-server]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 通过 findOneBy 方法获取的 Doctrine 实体的行为与往常一样,但会触发致命错误
我有一个带有 Doctrine 2 ORM 的 PHP 应用程序。我在实体对象上调用 getter。它可以工作,但是 PHP 显示致命错误,说我正在调用 null 上的方法,但是is_null
使用与参数相同的对象调用的函数(错误上方的一行)返回 false。最奇怪的部分是方法调用返回一个对象,并且它的字段打印没有问题(见输出)。
我尝试在同一个地方获取其他实体,调用类似的方法,并在没有错误的情况下做几乎相同的事情。PageUrl 实体存在问题。
我认为我的映射没问题,代码本身没有问题。我怀疑 Doctrine 或 PHP 内置网络服务器。有什么想法导致错误,为什么它不停止执行?
错误
错误发生的地方
输出
PageUrl 实体
页面实体
fat-free-framework - 使用 PHP 内置 Web 服务器的 Fatfree 路由
我正在学习 fatfree 的路线,发现它的行为出乎意料。
这是我在 index.php 中的代码:
这是我访问的 URL:http://xx.xx.xx.xx:8090/brew/12
我收到 404 错误:
奇怪的是,F3 中的 URI 现在是“/12”而不是“/brew/12”,我想这就是问题所在。
当我检查 base.php (3.6.5) 时,$this->hive['BASE'] = "/brew" 和 $this->hive['PATH'] = "/12"。但是如果 F3 只使用 $this->hive['PATH'] 来匹配预定义的路由,它将无法匹配它们。
如果我将路线更改为:
并使用 URL:http://xx.xx.xx.xx:8090/brew,然后路由匹配没有问题。在这种情况下,$this->hive['BASE'] = "" 和 $this->hive['PATH'] = "/brew"。如果 F3 将 $this->hive['PATH'] 与预定义的路由进行比较,则它们相互匹配。
顺便说一句,我正在使用 PHP 的内置 Web 服务器,并且由于 $_SERVER['REQUEST_URI'] (由 base.php 使用)返回正确的 URI,我认为我的 URL 重写没有任何问题.htrouter.php。
任何想法?我在这里错过了什么?
在此处添加 .htrouter.php 的内容
php - PHP 内置服务器/路由脚本:空的超全局变量
我正在尝试启动一个本地服务器来捕获所有调用的 URL。基本上我想模拟一个用于测试目的的 REST 接口,并将所有 Urls 和 POST/PUT/PATCH 数据写入文件。
我这样启动服务器:
/var/www/tests/import/ 是工作目录,/var/www/tests/import/index.php 是为每个被调用的 Url 调用的路由脚本。
index.php 的源代码是这样的:
脚本的输出如下所示:
因此,确实调用了脚本,但是所有超全局变量都是空的,唯一写入我的文件的是请求的有效负载。现在我只想知道调用了什么 URL,我该如何归档呢?
设置应该是 Ubuntu 18 的标准设置,这是 php.ini 中的变量顺序设置:
symfony - 如何避免终端捕获错误而不是 Symfony 分析器
[编辑于 6 月 19 日] 问题不是关于日志的内容,而是为什么日志没有出现在我的 symfony 分析器中
我的 symfony 分析器没有显示任何错误日志,但我的 php 内置服务器似乎捕获了它们并将它们显示在我的终端中。
要运行我的内置 Web 服务器,我使用以下命令:php bin/console server:run
没有额外参数
我的终端中的输出类似于:
当我检查我的 symfony 分析器时,我得到了这个空屏幕:
我记得很久以前,我在终端中运行了一个命令来更改详细程度,但不幸的是我不记得是哪一个来恢复它。我认为这就是终端显示日志信息而不是我的 symfony 分析器的原因
有人可以帮助我吗?
php - 如何让 PHP 的内置 webserver 吐出其内置的“404 Not Found”网页?
出于安全目的,我在我的代码中的一个地方为某些请求伪造了这个:
这将返回正确的(假的)“404 Not Found”HTTP 状态代码,并显示一个空白页面。
我当然也可以复制/伪造错误页面,例如通过简单地复制它,单独存储它,然后在调用之前/die()
调用时回显它。但是,我认为这很“丑陋”,并且会将我的代码专门绑定到内置的 PHP 网络服务器,如果 PHP 开发人员将来更改它,可能会在一段时间后使其不同。这不是一个好的解决方案。
我希望它完全独立于网络服务器和一切。我想激发网络服务器发送其真正的默认“404 Not Found”网页,无论它看起来如何。而且我不希望它显示它不是正确的错误页面,例如说:
在此服务器上找不到“dummydummydummydummy.php?blablabla=123”。
也就是说,解决方案不能包括“内部伪造”请求 URI 或类似的东西。
我希望它看起来好像请求确实无效,即使该页面在技术上存在。
来自 PHP。不是一些依赖于网络服务器的配置。(经过 20 年的 Apache HTTP Server 手册,我已经受够了。)
php - VSCode - 启动配置 - PHP 内置服务器:调试后停止
我目前正在开发一个 PHP REST API 项目。我是 VSCode 的新手,我目前正在尝试 IDE 的功能。在开发情况下,我使用内置的 PHP 服务器来运行我的 API,使用 CLI :
.vscode/launch.json
我尝试创建一个启动配置,以便能够使用文件从 VSCode 运行这个内置服务器。它起初工作,但我注意到当我结束调试会话时,内置服务器没有被杀死。它仍在运行。并且启动配置的下一次执行不会重新启动它。
所以我尝试使用postDebugTask
启动配置的属性来杀死 php 进程,遵循这篇文章。我最终得到了以下文件:
启动.json
任务.json
问题是当我停止调试会话时,永远不会执行“终止任务”。知道为什么吗?这可能与 php 命令没有在终端中返回提示有关吗?
编辑:我还发现使用preLaunchTask
启动内置 PHP 服务器会阻止 xdebug 工作。也许 9000 上的端口绑定发生得太快了。
通过启动配置文件启动内置服务器似乎是个坏主意......
php - PHP 内置 Web 服务器和路由器脚本中的语法错误
我正在使用PHP 内置 Web 服务器进行测试。例如,使用简单的路由器脚本:
启动它php -S localhost:8000 router.php
。作品。
现在,假设我在路由器脚本中犯了语法错误(例如缺少分号):
并使用相同的命令启动开发服务器。
在浏览localhost:8000
器中访问给我 404 错误:在此服务器上找不到请求的资源 /。. 它让我完全不知道问题或语法错误的位置。我在其中启动 Web 服务器的终端也没有显示任何错误(404 除外)。
我将错误报告设置E_ALL
为php.ini
. 我有display_errors
设置为On
.
在这种情况下在哪里查找错误消息?如何强制 PHP 将此类错误呈现给浏览器而不是 404 错误页面?
php - 在内置服务器中指定 PHP 文件时,在验证之前更改随机 $_SESSION 令牌
我正在生成一个唯一令牌并将其保存在每个请求的会话变量中(以典型的 CSRF 保护方式)。令牌在使用 POSTED 令牌值检查验证后刷新。
这是我的代码(index.php):
当我php -S localhost:8888
用来运行脚本时,它工作正常。但是当我指定 index.php 文件时,就像更改php -S localhost:8888 index.php
了一样。$_SESSION['token']
($_POST['token']
并且$_SESSION['token']
不匹配)。
php -S localhost:8888
php -S localhost:8888 index.php
我也尝试过使用路由文件。它也不起作用。php -S localhost:8888 server.php
控制台输出:
php -S localhost:8888
php -S localhost:8888 server.php
测试使用:
和
这是 PHP 内置服务器中的错误吗?
php - PHP内置Web服务器+动态扩展
我正在使用php内置服务器(v 7.3.6)。
一切都很完美。但是当我在php.ini文件上添加gd扩展名(通过删除";")时,没有任何答案。
类似的命令:
“php -S localhost:8000”和“php -v”
不再回答。
我可以在内置服务器上添加扩展吗?
感谢您的时间 !