TYPO3 - 使用composer在我的Extbase扩展中加载外部库在开发上下文中工作但不在生产中

时间:2017-01-27 14:09:45

标签: php git composer-php typo3 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 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...

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

  1. 添加到我的composer.json:

    "自动加载&#34 ;:     " prs-4":{        " Sinergi \ BrowserDetector \" :" Libraries / sinergi / browser-detector / src /"      }

  2. 转储自动加载

    composer dump-autoload

  3. 禁用opcache

  4. 删除composer.lock和新安装

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

1 个答案:

答案 0 :(得分:1)

我不知道您的文件最终会如何生产,但您应该使用

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

而不是require-dev,否则,它只适用于开发。