[SOLVED] Typo3v13 installation with composer failed

Installing Typo3v13 with composer ( composer create-project “typo3/cms-base-distribution:^13.4” my-new-project) directory “public” is missing. Get error:

In DependencyOrderingService.php line 31:

[ParseError]
syntax error, unexpected token “readonly”, expecting end of file

Does your hosting environment meet the minimum PHP requirements for TYPO3 v13?
You need to have at least PHP 8.2.

Yes, PHP 8.2 is activated.

Can you post the output of the composer command composer create-project "typo3/cms-base-distribution:^13.4" my-new-project?

[octocomm@s180:~/www/tea] $ composer create-project “typo3/cms-base-distribution:^13.4” typo3v13
Creating a “typo3/cms-base-distribution:^13.4” project at “./typo3v13”
Installing typo3/cms-base-distribution (v13.4.1)

  • Installing typo3/cms-base-distribution (v13.4.1): Extracting archive
    Created project in /home/octocomm/www/tea/typo3v13
    Loading composer repositories with package information
    Updating dependencies
    Lock file operations: 100 installs, 0 updates, 0 removals
  • Locking bacon/bacon-qr-code (v3.0.1)
  • Locking christian-riesen/base32 (1.6.0)
  • Locking dasprid/enum (1.0.6)
  • Locking doctrine/annotations (2.0.2)
  • Locking doctrine/dbal (4.2.2)
  • Locking doctrine/deprecations (1.1.4)
  • Locking doctrine/event-manager (2.0.1)
  • Locking doctrine/instantiator (2.0.0)
  • Locking doctrine/lexer (3.0.1)
  • Locking egulias/email-validator (4.0.3)
  • Locking enshrined/svg-sanitize (0.20.0)
  • Locking firebase/php-jwt (v6.11.0)
  • Locking guzzlehttp/guzzle (7.9.2)
  • Locking guzzlehttp/promises (2.0.4)
  • Locking guzzlehttp/psr7 (2.7.0)
  • Locking lolli42/finediff (1.1.1)
  • Locking masterminds/html5 (2.9.0)
  • Locking nikic/php-parser (v5.4.0)
  • Locking phpdocumentor/reflection-common (2.2.0)
  • Locking phpdocumentor/reflection-docblock (5.6.1)
  • Locking phpdocumentor/type-resolver (1.10.0)
  • Locking phpstan/phpdoc-parser (1.33.0)
  • Locking psr/cache (3.0.0)
  • Locking psr/clock (1.0.0)
  • Locking psr/container (2.0.2)
  • Locking psr/event-dispatcher (1.0.0)
  • Locking psr/http-client (1.0.3)
  • Locking psr/http-factory (1.1.0)
  • Locking psr/http-message (2.0)
  • Locking psr/http-server-handler (1.0.2)
  • Locking psr/http-server-middleware (1.0.2)
  • Locking psr/log (3.0.2)
  • Locking ralouphie/getallheaders (3.0.3)
  • Locking symfony/cache (v7.2.4)
  • Locking symfony/cache-contracts (v3.5.1)
  • Locking symfony/clock (v7.2.0)
  • Locking symfony/config (v7.2.3)
  • Locking symfony/console (v7.2.1)
  • Locking symfony/dependency-injection (v7.2.4)
  • Locking symfony/deprecation-contracts (v3.5.1)
  • Locking symfony/doctrine-messenger (v7.2.3)
  • Locking symfony/event-dispatcher (v7.2.0)
  • Locking symfony/event-dispatcher-contracts (v3.5.1)
  • Locking symfony/expression-language (v7.2.0)
  • Locking symfony/filesystem (v7.2.0)
  • Locking symfony/finder (v7.2.2)
  • Locking symfony/http-foundation (v7.2.3)
  • Locking symfony/mailer (v7.2.3)
  • Locking symfony/messenger (v7.2.4)
  • Locking symfony/mime (v7.2.4)
  • Locking symfony/options-resolver (v7.2.0)
  • Locking symfony/polyfill-ctype (v1.31.0)
  • Locking symfony/polyfill-intl-grapheme (v1.31.0)
  • Locking symfony/polyfill-intl-idn (v1.31.0)
  • Locking symfony/polyfill-intl-normalizer (v1.31.0)
  • Locking symfony/polyfill-mbstring (v1.31.0)
  • Locking symfony/polyfill-php83 (v1.31.0)
  • Locking symfony/polyfill-uuid (v1.31.0)
  • Locking symfony/process (v7.2.4)
  • Locking symfony/property-access (v7.2.3)
  • Locking symfony/property-info (v7.2.3)
  • Locking symfony/rate-limiter (v7.2.0)
  • Locking symfony/routing (v7.2.3)
  • Locking symfony/service-contracts (v3.5.1)
  • Locking symfony/string (v7.2.0)
  • Locking symfony/type-info (v7.2.4)
  • Locking symfony/uid (v7.2.0)
  • Locking symfony/var-exporter (v7.2.4)
  • Locking symfony/yaml (v7.2.3)
  • Locking typo3/class-alias-loader (v1.2.0)
  • Locking typo3/cms-backend (v13.4.5)
  • Locking typo3/cms-belog (v13.4.5)
  • Locking typo3/cms-beuser (v13.4.5)
  • Locking typo3/cms-cli (3.1.2)
  • Locking typo3/cms-composer-installers (v5.0.1)
  • Locking typo3/cms-core (v13.4.5)
  • Locking typo3/cms-dashboard (v13.4.5)
  • Locking typo3/cms-extbase (v13.4.5)
  • Locking typo3/cms-extensionmanager (v13.4.5)
  • Locking typo3/cms-felogin (v13.4.5)
  • Locking typo3/cms-filelist (v13.4.5)
  • Locking typo3/cms-fluid (v13.4.5)
  • Locking typo3/cms-fluid-styled-content (v13.4.5)
  • Locking typo3/cms-form (v13.4.5)
  • Locking typo3/cms-frontend (v13.4.5)
  • Locking typo3/cms-impexp (v13.4.5)
  • Locking typo3/cms-info (v13.4.5)
  • Locking typo3/cms-install (v13.4.5)
  • Locking typo3/cms-reactions (v13.4.5)
  • Locking typo3/cms-recycler (v13.4.5)
  • Locking typo3/cms-rte-ckeditor (v13.4.5)
  • Locking typo3/cms-seo (v13.4.5)
  • Locking typo3/cms-setup (v13.4.5)
  • Locking typo3/cms-sys-note (v13.4.5)
  • Locking typo3/cms-tstemplate (v13.4.5)
  • Locking typo3/cms-viewpage (v13.4.5)
  • Locking typo3/cms-webhooks (v13.4.5)
  • Locking typo3/html-sanitizer (v2.2.0)
  • Locking typo3fluid/fluid (4.0.3)
  • Locking webmozart/assert (1.11.0)
    Writing lock file
    Installing dependencies from lock file (including require-dev)
    Package operations: 100 installs, 0 updates, 0 removals
  • Installing typo3/class-alias-loader (v1.2.0): Extracting archive
  • Installing typo3/cms-composer-installers (v5.0.1): Extracting archive
  • Installing dasprid/enum (1.0.6): Extracting archive
  • Installing bacon/bacon-qr-code (v3.0.1): Extracting archive
  • Installing christian-riesen/base32 (1.6.0): Extracting archive
  • Installing psr/cache (3.0.0): Extracting archive
  • Installing doctrine/lexer (3.0.1): Extracting archive
  • Installing doctrine/annotations (2.0.2): Extracting archive
  • Installing doctrine/event-manager (2.0.1): Extracting archive
  • Installing doctrine/instantiator (2.0.0): Extracting archive
  • Installing enshrined/svg-sanitize (0.20.0): Extracting archive
  • Installing firebase/php-jwt (v6.11.0): Extracting archive
  • Installing symfony/deprecation-contracts (v3.5.1): Extracting archive
  • Installing psr/http-message (2.0): Extracting archive
  • Installing psr/http-client (1.0.3): Extracting archive
  • Installing ralouphie/getallheaders (3.0.3): Extracting archive
  • Installing psr/http-factory (1.1.0): Extracting archive
  • Installing guzzlehttp/psr7 (2.7.0): Extracting archive
  • Installing guzzlehttp/promises (2.0.4): Extracting archive
  • Installing guzzlehttp/guzzle (7.9.2): Extracting archive
  • Installing symfony/polyfill-mbstring (v1.31.0): Extracting archive
  • Installing lolli42/finediff (1.1.1): Extracting archive
  • Installing symfony/polyfill-ctype (v1.31.0): Extracting archive
  • Installing webmozart/assert (1.11.0): Extracting archive
  • Installing phpstan/phpdoc-parser (1.33.0): Extracting archive
  • Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
  • Installing doctrine/deprecations (1.1.4): Extracting archive
  • Installing phpdocumentor/type-resolver (1.10.0): Extracting archive
  • Installing phpdocumentor/reflection-docblock (5.6.1): Extracting archive
  • Installing psr/clock (1.0.0): Extracting archive
  • Installing psr/http-server-handler (1.0.2): Extracting archive
  • Installing psr/http-server-middleware (1.0.2): Extracting archive
  • Installing symfony/var-exporter (v7.2.4): Extracting archive
  • Installing psr/container (2.0.2): Extracting archive
  • Installing symfony/service-contracts (v3.5.1): Extracting archive
  • Installing symfony/cache-contracts (v3.5.1): Extracting archive
  • Installing psr/log (3.0.2): Extracting archive
  • Installing symfony/cache (v7.2.4): Extracting archive
  • Installing symfony/filesystem (v7.2.0): Extracting archive
  • Installing symfony/config (v7.2.3): Extracting archive
  • Installing symfony/polyfill-intl-normalizer (v1.31.0): Extracting archive
  • Installing symfony/polyfill-intl-grapheme (v1.31.0): Extracting archive
  • Installing symfony/string (v7.2.0): Extracting archive
  • Installing symfony/console (v7.2.1): Extracting archive
  • Installing symfony/dependency-injection (v7.2.4): Extracting archive
  • Installing symfony/polyfill-php83 (v1.31.0): Extracting archive
  • Installing symfony/clock (v7.2.0): Extracting archive
  • Installing symfony/messenger (v7.2.4): Extracting archive
  • Installing doctrine/dbal (4.2.2): Extracting archive
  • Installing symfony/doctrine-messenger (v7.2.3): Extracting archive
  • Installing psr/event-dispatcher (1.0.0): Extracting archive
  • Installing symfony/event-dispatcher-contracts (v3.5.1): Extracting archive
  • Installing symfony/polyfill-intl-idn (v1.31.0): Extracting archive
  • Installing symfony/mime (v7.2.4): Extracting archive
  • Installing symfony/event-dispatcher (v7.2.0): Extracting archive
  • Installing egulias/email-validator (4.0.3): Extracting archive
  • Installing symfony/mailer (v7.2.3): Extracting archive
  • Installing symfony/polyfill-uuid (v1.31.0): Extracting archive
  • Installing symfony/process (v7.2.4): Extracting archive
  • Installing symfony/type-info (v7.2.4): Extracting archive
  • Installing symfony/property-info (v7.2.3): Extracting archive
  • Installing symfony/property-access (v7.2.3): Extracting archive
  • Installing symfony/options-resolver (v7.2.0): Extracting archive
  • Installing symfony/rate-limiter (v7.2.0): Extracting archive
  • Installing symfony/routing (v7.2.3): Extracting archive
  • Installing symfony/yaml (v7.2.3): Extracting archive
  • Installing typo3fluid/fluid (4.0.3): Extracting archive
  • Installing masterminds/html5 (2.9.0): Extracting archive
  • Installing typo3/html-sanitizer (v2.2.0): Extracting archive
  • Installing typo3/cms-cli (3.1.2): Extracting archive
  • Installing symfony/uid (v7.2.0): Extracting archive
  • Installing symfony/http-foundation (v7.2.3): Extracting archive
  • Installing symfony/finder (v7.2.2): Extracting archive
  • Installing symfony/expression-language (v7.2.0): Extracting archive
  • Installing typo3/cms-core (v13.4.5): Extracting archive
  • Installing typo3/cms-belog (v13.4.5): Extracting archive
  • Installing typo3/cms-beuser (v13.4.5): Extracting archive
  • Installing typo3/cms-frontend (v13.4.5): Extracting archive
  • Installing typo3/cms-extbase (v13.4.5): Extracting archive
  • Installing typo3/cms-fluid (v13.4.5): Extracting archive
  • Installing typo3/cms-backend (v13.4.5): Extracting archive
  • Installing typo3/cms-dashboard (v13.4.5): Extracting archive
  • Installing typo3/cms-extensionmanager (v13.4.5): Extracting archive
  • Installing typo3/cms-felogin (v13.4.5): Extracting archive
  • Installing typo3/cms-filelist (v13.4.5): Extracting archive
  • Installing typo3/cms-fluid-styled-content (v13.4.5): Extracting archive
  • Installing typo3/cms-form (v13.4.5): Extracting archive
  • Installing typo3/cms-impexp (v13.4.5): Extracting archive
  • Installing typo3/cms-info (v13.4.5): Extracting archive
  • Installing nikic/php-parser (v5.4.0): Extracting archive
  • Installing typo3/cms-install (v13.4.5): Extracting archive
  • Installing typo3/cms-reactions (v13.4.5): Extracting archive
  • Installing typo3/cms-recycler (v13.4.5): Extracting archive
  • Installing typo3/cms-rte-ckeditor (v13.4.5): Extracting archive
  • Installing typo3/cms-seo (v13.4.5): Extracting archive
  • Installing typo3/cms-setup (v13.4.5): Extracting archive
  • Installing typo3/cms-sys-note (v13.4.5): Extracting archive
  • Installing typo3/cms-tstemplate (v13.4.5): Extracting archive
  • Installing typo3/cms-viewpage (v13.4.5): Extracting archive
  • Installing typo3/cms-webhooks (v13.4.5): Extracting archive
    8 package suggestions were added by new dependencies, use composer suggest to see details.
    Generating autoload files
    Generating class alias map file

In DependencyOrderingService.php line 31:

[ParseError]
syntax error, unexpected token “readonly”, expecting end of file

Exception trace:
at /home/octocomm/www/tea/typo3v13/vendor/typo3/cms-core/Classes/Service/DependencyOrderingService.php:31
Composer\Autoload{closure}() at phar:///usr/local/php81/bin/composer.phar/vendor/composer/ClassLoader.php:427
Composer\Autoload\ClassLoader->loadClass() at /home/octocomm/www/tea/typo3v13/vendor/typo3/cms-core/Classes/Composer/PackageArtifactBuilder.php:80
TYPO3\CMS\Core\Composer\PackageArtifactBuilder->__construct() at /home/octocomm/www/tea/typo3v13/vendor/typo3/cms-core/Classes/Composer/InstallerScripts.php:46
TYPO3\CMS\Core\Composer\InstallerScripts::register() at /home/octocomm/www/tea/typo3v13/vendor/typo3/cms-composer-installers/src/Plugin/Core/ScriptDispatcher.php:108
TYPO3\CMS\Composer\Plugin\Core\ScriptDispatcher->registerInstallerScripts() at /home/octocomm/www/tea/typo3v13/vendor/typo3/cms-composer-installers/src/Plugin/Core/ScriptDispatcher.php:95
TYPO3\CMS\Composer\Plugin\Core\ScriptDispatcher->registerLoader() at /home/octocomm/www/tea/typo3v13/vendor/typo3/cms-composer-installers/src/Plugin/Core/ScriptDispatcher.php:63
TYPO3\CMS\Composer\Plugin\Core\ScriptDispatcher->executeScripts() at /home/octocomm/www/tea/typo3v13/vendor/typo3/cms-composer-installers/src/Plugin/PluginImplementation.php:93
TYPO3\CMS\Composer\Plugin\PluginImplementation->postAutoloadDump() at /home/octocomm/www/tea/typo3v13/vendor/typo3/cms-composer-installers/src/Installer/Plugin.php:101
TYPO3\CMS\Composer\Installer\Plugin->listen() at phar:///usr/local/php81/bin/composer.phar/src/Composer/EventDispatcher/EventDispatcher.php:220
Composer\EventDispatcher\EventDispatcher->doDispatch() at phar:///usr/local/php81/bin/composer.phar/src/Composer/EventDispatcher/EventDispatcher.php:131
Composer\EventDispatcher\EventDispatcher->dispatchScript() at phar:///usr/local/php81/bin/composer.phar/src/Composer/Autoload/AutoloadGenerator.php:474
Composer\Autoload\AutoloadGenerator->dump() at phar:///usr/local/php81/bin/composer.phar/src/Composer/Installer.php:370
Composer\Installer->run() at phar:///usr/local/php81/bin/composer.phar/src/Composer/Command/CreateProjectCommand.php:263
Composer\Command\CreateProjectCommand->installProject() at phar:///usr/local/php81/bin/composer.phar/src/Composer/Command/CreateProjectCommand.php:171
Composer\Command\CreateProjectCommand->execute() at phar:///usr/local/php81/bin/composer.phar/vendor/symfony/console/Command/Command.php:298
Symfony\Component\Console\Command\Command->run() at phar:///usr/local/php81/bin/composer.phar/vendor/symfony/console/Application.php:1040
Symfony\Component\Console\Application->doRunCommand() at phar:///usr/local/php81/bin/composer.phar/vendor/symfony/console/Application.php:301
Symfony\Component\Console\Application->doRun() at phar:///usr/local/php81/bin/composer.phar/src/Composer/Console/Application.php:396
Composer\Console\Application->doRun() at phar:///usr/local/php81/bin/composer.phar/vendor/symfony/console/Application.php:171
Symfony\Component\Console\Application->run() at phar:///usr/local/php81/bin/composer.phar/src/Composer/Console/Application.php:136
Composer\Console\Application->run() at phar:///usr/local/php81/bin/composer.phar/bin/composer:98
require() at /usr/local/php81/bin/composer.phar:29

create-project [-s|–stability STABILITY] [–prefer-source] [–prefer-dist] [–prefer-install PREFER-INSTALL] [–repository REPOSITORY] [–repository-url REPOSITORY-URL] [–add-repository] [–dev] [–no-dev] [–no-custom-installers] [–no-scripts] [–no-progress] [–no-secure-http] [–keep-vcs] [–remove-vcs] [–no-install] [–no-audit] [–audit-format AUDIT-FORMAT] [–ignore-platform-req IGNORE-PLATFORM-REQ] [–ignore-platform-reqs] [–ask] [–] [ [ []]]

Does php -v on your console really output PHP 8.2?

The error message sounds very much like PHP 8.1 or older.

Just spotted in your output:

phar:///usr/local/php81/bin/composer.phar

So you should check again if the console really has PHP 8.2 and maybe you want to run composer self-update.

I installed Typo3v13 manually (Typo3_src-13.4.5.Tar uploaded and unzipped). That works.

Backend Environment Overview:
Operating system: Unix
PHP version: 8.2.27
PHP CGI detected: Yes

The problem may be because the installation creates a folder that is not PHP 8.2. How can I install Typo3 in an existing directory?

PHP versions between web server (Apache, Nginx) and console (CLI) may differ.

You problem has nothing to do with the folder where you install TYPO3. It’s rather a CLI problem.

Did you try php -v?

Do you make the installation on your local machine or at some hosting provider?

Installation is on hosting provider (hostpoint.ch).

php -v says:
PHP 8.1.31 (cli) (built: Nov 26 2024 14:32:36) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.31, Copyright (c) Zend Technologies
with Zend OPcache v8.1.31, Copyright (c), by Zend Technologies

How can I solve this?

You need to get in touch with the support of your hosting provider and ask them to upgrade PHP on CLI.

Some provides offer the possibility to use multiple PHP versions on CLI.

Apparently you’re currently using the php binary from /usr/local/php81/. So you could check if there is a directory like /usr/local/php82/ as well. Then you need to locate the php binary in this directory. It could be either /usr/local/php82/php or /usr/local/php82/bin/php or similar.
If this is the case, you need to prefix your composer command like this:

/usr/local/php82/bin/php composer create-project "typo3/cms-base-distribution:^13.4" my-new-project

By the way: if you just want to have a test installation of TYPO3 to explore it’s features, I can strongly recommend to run DDEV on your local machine. It has built in support for TYPO3 and it’s free!
You can learn more about DDEV here:

1 Like

I just checked the support pages of your hosting provider. It’s all explained there: