问题标签 [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.

0 投票
1 回答
71 浏览

php - 通过 findOneBy 方法获取的 Doctrine 实体的行为与往常一样,但会触发致命错误

我有一个带有 Doctrine 2 ORM 的 PHP 应用程序。我在实体对象上调用 getter。它可以工作,但是 PHP 显示致命错误,说我正在调用 null 上的方法,但是is_null使用与参数相同的对象调用的函数(错误上方的一行)返回 false。最奇怪的部分是方法调用返回一个对象,并且它的字段打印没有问题(见输出)。

我尝试在同一个地方获取其他实体,调用类似的方法,并在没有错误的情况下做几乎相同的事情。PageUrl 实体存在问题。

我认为我的映射没问题,代码本身没有问题。我怀疑 Doctrine 或 PHP 内置网络服务器。有什么想法导致错误,为什么它不停止执行?

错误

错误发生的地方

输出

PageUrl 实体

页面实体

0 投票
2 回答
1539 浏览

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 的内容

0 投票
1 回答
79 浏览

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 中的变量顺序设置:

0 投票
0 回答
71 浏览

php - PHP内置webserver破坏外来字符

0 投票
2 回答
442 浏览

symfony - 如何避免终端捕获错误而不是 Symfony 分析器

[编辑于 6 月 19 日] 问题不是关于日志的内容,而是为什么日志没有出现在我的 symfony 分析器中

我的 symfony 分析器没有显示任何错误日志,但我的 php 内置服务器似乎捕获了它们并将它们显示在我的终端中。

要运行我的内置 Web 服务器,我使用以下命令:php bin/console server:run没有额外参数

我的终端中的输出类似于:

当我检查我的 symfony 分析器时,我得到了这个空屏幕: Symfony 分析器

我记得很久以前,我在终端中运行了一个命令来更改详细程度,但不幸的是我不记得是哪一个来恢复它。我认为这就是终端显示日志信息而不是我的 symfony 分析器的原因

有人可以帮助我吗?

0 投票
0 回答
27 浏览

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 手册,我已经受够了。)

0 投票
0 回答
375 浏览

php - VSCode - 启动配置 - PHP 内置服务器:调试后停止

我目前正在开发一个 PHP REST API 项目。我是 VSCode 的新手,我目前正在尝试 IDE 的功能。在开发情况下,我使用内置的 PHP 服务器来运行我的 API,使用 CLI :

.vscode/launch.json我尝试创建一个启动配置,以便能够使用文件从 VSCode 运行这个内置服务器。它起初工作,但我注意到当我结束调试会话时,内置服务器没有被杀死。它仍在运行。并且启动配置的下一次执行不会重新启动它。

所以我尝试使用postDebugTask启动配置的属性来杀死 php 进程,遵循这篇文章。我最终得到了以下文件:

启动.json

任务.json

问题是当我停止调试会话时,永远不会执行“终止任务”。知道为什么吗?这可能与 php 命令没有在终端中返回提示有关吗?

编辑:我还发现使用preLaunchTask启动内置 PHP 服务器会阻止 xdebug 工作。也许 9000 上的端口绑定发生得太快了。

通过启动配置文件启动内置服务器似乎是个坏主意......

0 投票
1 回答
164 浏览

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

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

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

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

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

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

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

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

0 投票
1 回答
51 浏览

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 内置服务器中的错误吗?

0 投票
1 回答
32 浏览

php - PHP内置Web服务器+动态扩展

我正在使用php内置服务器(v 7.3.6)

一切都很完美。但是当我在php.ini文件上添加gd扩展名(通过删除";")时,没有任何答案。

类似的命令:

“php -S localhost:8000”和“php -v”

不再回答。

我可以在内置服务器上添加扩展吗?

感谢您的时间 !