Я работаю над переносом проекта Symfony 2.8
на Symfony 3.4
.Хотя в целом процесс довольно прост, я спотыкаюсь в одной точке:
Хотя показанный код работает без проблем на Symfony 2.8
, он не работает на Symfony 3.4
с ContextErrorException
.Код взят из контроллера «Catch all», который обрабатывает вызовы 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
- Оба проекта позволяют изменять / добавлять настройки PHP.ini в файлах .htaccess (насколько я вижу)
Итак, обапроекты выполняются в той же среде, Symfony 2.8
работает нормально, а Symfony 3.4
создает исключение в уведомлении PHP.Даже не ошибка или предупреждение, а просто уведомление.Как это может быть и как решить эту проблему?
Существуют ли другие конфигурационные файлы, в которых Symfony 3.8
изменяет настройки PHP?