In unserer Agentur sollte ein Magento CE 2.4.5-p1 Onlineshop installiert werden auf XAMPP (PHP 8.1) / Windows. Magento Webshops sind nicht ausgelegt auf Windows bzw. XAMPP, daher gibt es hier einige Besonderheiten. Nachdem wir die meisten Schwierigkeiten ausräumen konnten (richtige c:\xampp\apache\conf\extra\httpd-vhosts.conf-Konfiguration, Anpassung \vendor\magento\framework\View\Element\Template\File\Validator.php wg. unterschiedlichem Verzeichnistrenner, etc.) blieb ein Fehler bestehen.
Während wir im Developer-Mode zwar manuell deployen konnten via bin/magento -f setup:static-content:deploy de_DE en_US, wurden die Assets in /pub/static/ nach bloßem Aufrufen der Seite nicht erzeugt. Allein die require-config.js wurde geschrieben. Im debug.log war (unter anderem) der folgende Fehler zu finden, der in der Datei
\vendor\magento\framework\App\StaticResource.php
erzeugt wurde:
adminhtml/Magento/backend/de_DE/Magento_ReCaptchaUser/css/recaptcha.css is wrong.
<pre>#1 Magento\Framework\App\Bootstrap->run() called at [pub\static.php:13]
</pre>
Dieser wurde dadurch erzeugt, dass der Rückgabewert der Methode
$this->isThemeAllowed($params['area']. DIRECTORY_SEPARATOR .$params['theme'])
"false" war. Dies resultierte aus dem Windows Verzeichnistrenner, der dann bei uns dieses Webshop Theme abfragen lassen wollte:
frontend\Magento/luma
Dies wertete das System als nicht erlaubt (macht jedoch in diesem Kontext keinen Sinn) und ließ eine Generierung der Assets nicht zu.
Somit mussten wir hier
if (!($this->isThemeAllowed($params['area'] . DIRECTORY_SEPARATOR . $params['theme'])
ersetzen mit
if (!($this->isThemeAllowed($params['area'] . '/' . $params['theme'])
Damit war das Shopsystem wieder lauffähig und die Assets wurden auf Anfrage im Developer Mode generiert. Und: Ja, natürlich, bitte nicht direkt in "vendor" korrigieren, sondern eine eigene Extension schreiben, die die launch()-Funktion überschreibt, aber das versteht sich eigentlich von selbst. :-)
Gesehen in unserer Webagentur in einem Magento Webshop in der Version 2.4.5-p1 auf XAMPP in Windows.