Ich habe dieses Problem festgestellt und für jede Instanz von "Es wurden keine Token bereitgestellt" Haltepunkte gesetzt.
grep -lr 'No tokens were provided' vendor/
welches zurückkehrte:
vendor/zendframework/zend-code/src/Scanner/ConstantScanner.php
vendor/zendframework/zend-code/src/Scanner/TokenArrayScanner.php
vendor/zendframework/zend-code/src/Scanner/MethodScanner.php
vendor/zendframework/zend-code/src/Scanner/PropertyScanner.php
vendor/zendframework/zend-code/src/Scanner/ClassScanner.php
Meine Ausnahme wurde in die TokenArrayScanner.php
Datei geworfen . Der Instanzwert "Token" wird im Konstruktor festgelegt, daher habe ich dort einen Haltepunkt gesetzt und den Prozess neu gestartet. Leider wird dieser Konstruktor für zahlreiche Dateien mehrmals aufgerufen, und Daten für die zu tokenisierende Datei sind nicht im Konstruktaufruf enthalten. Ich konnte feststellen, dass die "Token" nur Zeilen der zu inspizierenden Datei sind. Basierend auf dem Beitrag von CarComp habe ich dies verwendet, um die fehlerhafte Datei zu finden:
find . -type f -name '*.php' -empty
Dies ergab eine Reihe von Dateien, die sich unter Pfaden befanden, die "dev / tests" enthielten, die vom Scannen ausgeschlossen sind, sowie eine einzelne Datei eines Drittentwicklers. Das Entfernen dieser Datei löste das Problem und der Kompilierungsbefehl wurde nur mit Beschwerden und nicht mit Ausnahmen ausgeführt.
Wenn Sie wissen möchten, wie diese leeren Dateien zu finden sind, führen Sie diesen Befehl (vorausgesetzt, Sie haben Linux und Zugriff auf die Shell) in Ihrem Magento-Stammverzeichnis oder in dem Verzeichnis aus, in dem Sie möglicherweise leere Dateien haben. .
quelle
Anscheinend haben Sie eine leere Datei, die von \ Magento \ Setup \ Module \ Di \ Code \ Reader \ ClassesScanner analysiert wird und die PHP- Methode token_get_all verwendet. Die Ausnahme wird ausgelöst, wenn die Methode keinen Wert zurückgibt, was bei einer leeren Datei der Fall ist.
quelle
Leere Dateien führen auch zu dem Problem, dass keine Token bereitgestellt wurden. Daher sollte ClassesScanner überprüft werden, um festzustellen, ob der verwendete Verzeichniseintrag oder eine Klassendatei eine gültige Datei ist und deren Inhalt nicht leer ist. Sie müssen den erstellten Dateien den richtigen Inhalt hinzufügen, oder er sollte nicht definiert / erstellt werden.
quelle
Sie können dies in folgenden Zustand setzen:
Überprüfen Sie dann system.log, um festzustellen, welche Datei diesen Fehler verursacht hat.
quelle