TYPO3 PHP Pfad auf CLI

Fehlermeldung

Script typo3cms install:fixfolderstructure handling the typo3-cms-scripts event returned with error code 255
Script @typo3-cms-scripts was called via post-autoload-dump

Ursache

Das Script typo3cms, welches von helhum/typo3-console von Composer verwendet, erwartet, dass der Shell-Aufruf php die richtige PHP-Version benutzt. Jedoch trifft das nicht auf Systeme mit mehreren PHP-Versionen zu. Hier muss php7.4 bin/console oder vergleichbares verwendet werden.

Lösung

Es werden composer scripts verwendet, um ein Skript vor der typo3cms console auszuführen und die PHP Version dynamisch zu überschreiben.

  • Legen Sie hierzu diese Datei im Projekt-Root ab und speichern Sie sie als dynamicPhpPath.php:

    <?php
    
    if (!getenv('PHP_BIN_PATH')){
      return;
    }
    $typo3cmsPath = __DIR__ . '/vendor/bin/typo3cms';
    if (!file_exists($typo3cmsPath)) {
      echo 'typo3cms binary not found at expected path ' . $typo3cmsPath . PHP_EOL;
      return;
    }
    $typo3cms = file($typo3cmsPath);
    $typo3cms[0] = '#!' . getenv('PHP_BIN_PATH');
    file_put_contents($typo3cmsPath, implode(PHP_EOL, $typo3cms));
    echo 'typo3cms PHP binary path patched' . PHP_EOL;
  • Passen Sie jetzt auch die composer.json-Datei an, sodass dieses Script vorher ausgeführt wird:

    "scripts":{
        "typo3-cms-scripts": [
    		"typo3cms install:fixfolderstructure",
      	   "typo3cms install:generatepackagestates"
        ],
        "post-autoload-dump": [
    	  "php dynamicPhpPath.php",
      	  "@typo3-cms-scripts"
      	]
      }
  • Nun können Sie bei einem Deployment oder auf der Console folgendes verwenden:

    export PHP_BIN_PATH=/usr/bin/php7.4
    ./vendor/bin/typo3cms

    oder:

    PHP_BIN_PATH=/usr/bin/php7.4 ./vendor/bin/typo3cms
  • Auch wenn Composer bei einem install-Befehl an passender Stelle die typo3cms-Befehle ausführt, ist das jetzt kein Problem mehr:

    export PHP_BIN_PATH=/usr/bin/php7.4
    composer install

Bei Fragen steht Ihnen unser Support gerne zur Verfügung.