gpt4 book ai didi

php - 为什么 Symfony 3.4 在 PHP 通知上抛出 ContextErrorException,而 Symfony 2.8 在相同代码上运行良好?

转载 作者:行者123 更新时间:2023-12-02 03:24:27 27 4
gpt4 key购买 nike

我正在致力于将 Symfony 2.8 项目迁移到 Symfony 3.4。虽然整个过程非常简单,但我在某一点上遇到了困难:

虽然下面显示的代码在 Symfony 2.8 上运行没有任何问题,但在 Symfony 3.4 上运行失败,并出现 ContextErrorException。该代码来自“Catch all” Controller ,该 Controller 处理对未由任何其他路由处理的 URL 的调用:

public function catchallAction(Request $request) {
$url = $_SERVER['REQUEST_URI'];

// Try to find a solution, e.g. by adding / replacing the locale
if (1 === preg_match('/(\/app_dev\.php)?(\/([a-z]{2}))?(((\/([^\/]+))?(\/[^?]+))(\?(.+))?)/', $url, $matches)) {
$this->logger->info('catchallAction');
$this->logger->info(" $url");

foreach ($matches as $key => $value)
$logger->info(" $key => $value");

$locale = (isset($matches[3]) ? $matches[3] : null);
$subdir = (isset($matches[7]) ? $matches[7] : null);
$path = $matches[5];
$query = $matches[10];

// ==> Exception in Symfony 3.4

...
}

...
}

// Log output
catchallAction
/app_dev.php/logout
0 => /app_dev.php/logout
1 => /app_dev.php
2 =>
3 =>
4 => /logout
5 => /logout
6 =>
7 =>
8 => /logout

异常消息是正确的,$matches 数组中没有索引 10。 但是,我不明白为什么这会在 `Symfony 中引发异常

  • 两个项目运行完全相同的服务器
  • 两个项目都使用完全相同的 PHP 版本和完全相同的 PHP.ini
  • 这两个项目都是为了更改/添加 .htaccess 文件中的 PHP.ini 设置(据我所知)

因此,虽然两个项目在同一环境中运行,但 Symfony 2.8 运行良好,而 Symfony 3.4 在 PHP 通知上抛出异常。甚至不是错误或警告,而只是通知。这是怎么回事以及如何解决这个问题?

Symfony 3.8 是否有任何其他配置文件可以更改 PHP 设置?

最佳答案

我设法找到解决方案:

Symfony 3.2 引入了 debug.error_handler.throw_at 参数,该参数控制在哪个 PHP 错误(警告、通知等)上引发异常。

只需将以下内容添加到 config_dev.yml 即可仅在错误时抛出异常。也许这个答案可以帮助其他人腾出一些时间:-)

parameters:
# Avoid Symfony exceptions on PHP Warnings, Notices, etc., just handele error
# PHP E_ERROR = 1
debug.error_handler.throw_at: 1

关于php - 为什么 Symfony 3.4 在 PHP 通知上抛出 ContextErrorException,而 Symfony 2.8 在相同代码上运行良好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53811201/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com