В настоящее время мы столкнулись с некоторыми проблемами при установке TYPO3 9.5 с использованием NGINX .

В TYPO3 9.5 некоторые методы объявлены устаревшими, а некоторые классы перемещены в Core . Однако некоторые расширения по-прежнему создают экземпляры этих классов, и это должно работать, потому что существует какое-то отображение, при котором старые классы просто расширяют новые классы.

В нашем случае это работает, когда мы запускаем нашу установку с Apache . Однако, когда мы запускаем его с использованием NGINX , возникают ошибки блокировки PHP . Мы просто получаем такие вещи, как

Error : Class OLD_CLASSNAME not found.

В нашей целевой среде используется Debian GNU / Linux 9 - PHP7.3 , но мы также попробовали выполнить простую установку с использованием Docker и шаблона из webdevops (https://github.com/webdevops/TYPO3-docker-boilerplate).

Мы сравнили наши файлы php.ini между Apacahe и NGINX , но не нашли, какой параметр является источником нашей проблемы. В некоторых случаях мы использовали обходной путь с помощью TYPO3 XClasses , но в некоторых случаях это просто не сработало.

Мы попытались добавить файл типа typo3.conf и поэкспериментировать с ним, но безуспешно. Использование самого низкого уровня ошибки или отключение отображения ошибок также не помогло.

Мы также пытались обновить нашу установку до TYPO3 10.x , но проблема все еще возникает.

Кто-нибудь сталкивался с таким поведением? Любая помощь по этой проблеме будет принята с благодарностью.

Спасибо заранее.

С уважением,

РЕШЕНИЕ И ИСПРАВЛЕНИЕ

Мы просто повторно проанализировали нашу проблему (после хорошего ночного сна) и поняли, что ошибались и наша проблема не может быть связана с Apache или NGINX . Наша интерпретация была неправильной. Поэтому мы повторно проверили наши развернутые пакеты в различных средах и обнаружили разницу в файлах автозагрузчика. Фактически, следующие строки отсутствовали в vendor / composer / autoload_files.php и в vendor / composer / autoload_static.php :

'...' => __DIR__ . '/..' . '/helhum/console-autoload-include.php',
'...' => __DIR__ . '/..' . '/typo3/alias-loader-include.php',
'...' => __DIR__ . '/..' . '/typo3/autoload-include.php',

Итак, проблема связана с генерацией автозагрузки, а не со средой.

0
Lancelot 15 Июн 2020 в 19:29

1 ответ

Лучший ответ

Ни Apache, ни Nginx не выполняют PHP. но они создают среду.
Информацию об этой среде можно найти с помощью функции php phpinfo().
Так что получите результат для обеих систем, чтобы увидеть, что отличает.
Затем вы можете попытаться объединить системы, пытаясь настроить Nginx, как установку Apache.

Имейте в виду, что в TYPO3 есть список классов для autoloader либо из Composer, либо вручную.
Если это перепутать, ваши классы не могут быть хорошо найдены.

1
Bernd Wilke πφ 16 Июн 2020 в 07:28