Search code examples
phpcomposer-phptypo3ddevtypo3-9.x

TYPO3 CMS Version 9 Installation fails due to lexer missing


The TYPO3 installation fails at the last step. The error message in the log says: PHP Fatal error: Class 'Doctrine\Common\Lexer' not found

Here is the code (in fact all the code that is present in this project):

.ddev/config.yaml

APIVersion: v0.20.0
name: v9
type: typo3
docroot: public
php_version: "7.2"
router_http_port: "80"
router_https_port: "443"
xdebug_enabled: false
additional_hostnames: []
provider: default

composer.json

{
  "name": "vendor/v9",
  "require": {
    "typo3/minimal": "~9.3"
  }
}

public/typo3conf/AdditionalConfiguration.php

<?php
/** #ddev-generated: Automatically generated TYPO3 AdditionalConfiguration.php file.
 ddev manages this file and may delete or overwrite the file unless this comment is removed.
 */

$GLOBALS['TYPO3_CONF_VARS']['SYS']['trustedHostsPattern'] = '.*';

$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default'] = array_merge($GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default'], [
                'dbname' => 'db',
                'host' => 'db',
                'password' => 'db',
                'port' => '3306',
                'user' => 'db',
]);

ddev start && ddev ssh then composer install and confirm with Y when ready I open http://v9.ddev.local/ and get redirected to http://v9.ddev.local/typo3/install.php

Now i have to create FIRST_INSTALL. Done. "No problems detected, continue with installation". Step 2 and 3 get skipped because database connection is already known by AdditionalConfiguration.php (generated by ddev). Set up a username and password and the Sitename. "Continue"

Now i get a blue progress bar and nothing happens. Entering ddev logs shows this error:

==> /var/log/nginx/error.log <==
2018/07/19 11:45:22 [error] 223#223: *440 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Class 'Doctrine\Common\Lexer' not found in /var/www/html/public/typo3/sysext/core/Classes/Database/Schema/Parser/Lexer.php on line 22" while reading response header from upstream, client: REMOVED_IP_ADDRESS, server: _, request: "POST /typo3/install.php HTTP/1.1", upstream: "fastcgi://unix:/run/php-fpm.sock:", host: "v9.ddev.local", referrer: "http://v9.ddev.local/typo3/install.php"

==> /var/log/php-fpm.log <==
[19-Jul-2018 11:45:22] WARNING: [pool www] child 232 said into stderr: "NOTICE: PHP message: PHP Fatal error:  Class 'Doctrine\Common\Lexer' not found in /var/www/html/public/typo3/sysext/core/Classes/Database/Schema/Parser/Lexer.php on line 22"

Solution

  • This is a known bug in the new 9 version: https://forge.typo3.org/issues/85552

    As mentioned in the issue, you should be able to fix it if you include lexer in your own composer.json: composer require doctrine/lexer:^1.0