TYPO3-用composer在我的Extbase扩展中加载外部库是在开发环境中工作的,但不是在生产中



我使用的是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加载程序:

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...

我尝试了一些我在互联网上创建的解决方案,比如:

  1. 添加到我的composer.json:

    "自动加载":"prs-4":{"Sinergi\浏览器检测器\":"库/Sinergi/浏览器检测器/src/"}

  2. 转储自动加载

    composer转储自动加载

  3. 禁用操作缓存

  4. 删除composer.lock并重新安装

但是,问题仍然存在,只是在生产中。我也删除了typep3temp目录的内容,然后它工作了一次,但在第二次500错误。有人知道我能做什么吗?

我不知道你的文件是如何在生产中结束的,但你应该使用

"require": {
"sinergi/browser-detector": "^6.1"
},

而不是require-dev,否则,它只适用于dev.

相关内容

最新更新