php - TYPO3 9.5:NGINX 找不到类
问题描述
我们目前在使用NGINX安装TYPO3 9.5时遇到了一些问题。
在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)。
我们比较了Apacahe和NGINX之间的php.ini文件,但我们没有发现哪个参数是我们问题的根源。在某些情况下,我们使用TYPO3 XClasses进行了解决,但在某些情况下它根本不起作用。
我们尝试添加一个类似typo3.conf的文件并尝试使用它,但没有成功。使用最低级别的错误或禁用错误显示也不起作用。
我们还尝试将我们的安装升级到TYPO3 10.x,但问题仍然存在。
有没有人遇到过这样的行为?对此问题的任何帮助将不胜感激。
提前谢谢了。
最好的祝福,
解决方案和更正
我们只是重新分析了我们的问题(经过一夜好眠),我们意识到我们错了,我们的问题与Apache或NGINX 无关。我们的解释是错误的。因此,我们重新检查了我们在各种环境中部署的包,并发现了 autloader 文件中的差异。事实上,在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',
因此,问题与自动加载生成有关,与环境无关。
解决方案
Apache 和 Nginx 都不执行 PHP。但他们提供了一个环境。
可以使用 php 函数找到有关此环境的信息phpinfo()
。
因此,获取两个系统的输出,看看有什么不同。
然后,您可以尝试在尝试像 Apache 安装一样配置 Nginx 时尝试统一系统。
请记住,TYPO3 有一个autoloader
fromComposer
或 manual 的类列表。
如果这混在一起,你的课程就找不到了。
推荐阅读
- powershell - 如何通过powershell访问windows10中的mdb文件?
- javascript - 本地媒体访问受限,直到用户与 Firefox 中的页面交互
- javascript - Axios 拦截器:阻止对特定页面的访问
- reactjs - 状态数组(不是对象)和扩展运算符
- java - Java ProcessBuilder:如何抑制输出而不是重定向它
- c# - 切断来自服务器的传出 http 调用
- r - 从 URL 下载 csv
- slice - 为什么从较高的负索引切片到较小的负索引会给出空字符串?
- java - 使用自定义类型将 JSON 字符串转换为 Map
- python - 为什么 Python md5 在 FIPS 模式下可用?