我正在使用TYPO3 6.2.26,我使用composer在我的扩展中添加了一个外部库(sinergi / browser-detector)。我们有两台服务器用于开发,另一台用于生产。问题出现在生产环境中,但在开发工作中它非常出色。
我在两台服务器上都有下一个结构(git subversion):
myext/Resources/Private/composer.json
myext/Resources/Private/Libraries/autoload.php (generate by composer)
myext/Resources/Private/Libraries/sinergi/...
myext/Resources/Private/Libraries/composer/... (generate by composer)
myext/ext_autoload.php
我在ext_autoload.php中加载了composer loader:
require __DIR__ . '/Resources/Private/Libraries/autoload.php';
我的composer.json看起来像这样:
{
"name": "vendor/vendor",
"description": "My description",
"type": "library",
"require-dev": {
"sinergi/browser-detector": "^6.1"
},
"config": {
"vendor-dir": "Libraries"
},
"authors": [
{
"name": "xxx",
"email": "xxx"
}
]
}
使用此配置,它可以在开发环境中正常运行。在生产中发生了一种奇怪的情况,当我删除缓存时它只工作一次,第二次Web服务器返回500错误:
PHP Fatal Error: class Sinergi\\BrowserDetector\\...not found...
我尝试了一些我在互联网上创建的解决方案,如:
添加到我的composer.json:
"自动加载&#34 ;: " prs-4":{ " Sinergi \ BrowserDetector \" :" Libraries / sinergi / browser-detector / src /" }
转储自动加载
composer dump-autoload
禁用opcache
删除composer.lock和新安装
但是,问题仍然存在于生产中。我删除了typo3temp目录的内容,然后它工作一次,但在第二个500错误。有人知道我能做些什么吗?
答案 0 :(得分:1)
我不知道您的文件最终会如何生产,但您应该使用
"require": {
"sinergi/browser-detector": "^6.1"
},
而不是require-dev
,否则,它只适用于开发。