Shopware Plattform / 6 / Playground lokal ohne Docker

@Shopwareianer schrieb:

Ich nutze PHP 7.2.15. Hängt es hiermit evtl. zusammen?

Nutze ich auch, hab damit keine Probleme. Glaube ich also nicht.

Mein Setup ist php-7.2.15fpm, Apache, mariaDB 10.3.13

Ich hab mir ein einfaches script gemacht zum aufsetzen:

#!/bin/bash
rm -R /var/www/html/development
echo 'Alte Installation geloescht'
git clone https://github.com/shopware/development.git
echo 'neue Installation heruntergeladen'
cp /var/www/html/.psh.yaml.override development/
echo 'Konfiguration kopiert'
chmod 0777 -R /var/www/html/development
chown -R www-data:www-data /var/www/html/development
echo 'Verzeichnisrechte angepasst'
cd /var/www/html/development
composer install
echo 'Abhaengigkeiten aufgeloest'
./psh.phar install
echo 'Installation abgeschlossen'
./psh.phar storefront:install
./psh.phar storefront:prod
echo 'Storefront gebaut'

Habe selbst zwar ein Docker-Setup, hab das aber so auch schon auf einer einfachen Ubuntu-Maschine mit LAMP-Stack gemacht.

Ich benutze eine vorgefertigte yml.override um das vorzubereiten:

const:
  APP_ENV: "dev"
  APP_URL: "http://development"
  DB_HOST: "database"
  DB_PORT: "3306"
  DB_NAME: "next"
  DB_USER: "root"
  DB_PASSWORD: "root"

 

Ja, Sollte ja in PHP 7.2.X funktionieren und drin sein. Bekomme im Backend nach Login aber:  Foot-in-Mouth

Notice: Use of undefined constant PASSWORD_ARGON2I - assumed ‘PASSWORD_ARGON2I’

Oder hängt es vielleicht mit dem falschen Encoding der DB zusammen, sodass es falsch gespeichert wird? Welches wäre denn für die Datenbank korrekt? Denn die Datenbank speichert ja zum Teil nur Hyroglyphen wie oben im Bild zu sehen.  MySQL ist übrigens  5.7.22

Sicher, dass das nicht einfach binary Felder sind? Die kann PHPMyAdmin glaube noch nicht lesen. Adminer bspw. kann das. Mein aktuelles PHPMyAdmin zeigt aber dennoch keine Hyroglyphen an.

So sieht meine DB aus.

@Moritz Naczenski schrieb:

Sicher, dass das nicht einfach binary Felder sind? Die kann PHPMyAdmin glaube noch nicht lesen. Adminer bspw. kann das. Mein aktuelles PHPMyAdmin zeigt aber dennoch keine Hyroglyphen an.

image

So sieht meine DB aus.

Ich nutze Sequal Pro. Sowie ich das sehe speichert oder hat er alles als Hyroglyphen drin, was irgendwie mit einer ID zu tun hat. 

Kann mir aber eben den Fehler im Backend mit

Uncaught PHP Exception ErrorException: " Notice: Use of undefined constant PASSWORD_ARGON2I - assumed ‘PASSWORD_ARGON2I’" at /Users/me/Desktop/code/shopware-dev/vendor/shopware/platform/src/Core/Framework/DataAbstractionLayer/Field/PasswordField.php line 24 

nicht erklären …

Und im Frontend bzgl. des Endcodings bekomme ich eben den Fehler:

(1/1) InvalidArgumentException

Malformed UTF-8 characters, possibly incorrectly encoded

in JsonResponse.php line 152at JsonResponse->setData(false)in JsonResponse.php line 50at JsonResponse->__construct(array(‘errors’ => array(array(‘code’ => ‘0’, ‘status’ => ‘500’, ‘title’ => ‘Internal Server Error’, ‘detail’ => 'Notice: Use of undefined constant PASSWORD_ARGON2I … usw

Da muss also irgendwo was nicht stimmen - Im Setup. 

[@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski “Moritz Naczenski”)‍:

Bzgl. deines Scripts von oben:
Hast du hier ggf. eine komplette Aufstellung, welche Schritte du hier von einem komplett neuem Ubuntu 18.04 bis zu einer aufgesetzten Testumgebung machst? Also inkl. Hosteintrag, APT Get Installs etc.? Das sollte ja eigentlich durch eurern DEV Guide der Fall sein. Dies funktioniert nur leider nicht ganz.

@dreischild schrieb:

Bzgl. deines Scripts von oben:
Hast du hier ggf. eine komplette Aufstellung, welche Schritte du hier von einem komplett neuem Ubuntu 18.04 bis zu einer aufgesetzten Testumgebung machst? Also inkl. Hosteintrag, APT Get Installs etc.? Das sollte ja eigentlich durch eurern DEV Guide der Fall sein. Dies funktioniert nur leider nicht ganz.

Also mein  Docker-Setup ist kein Ubuntu.

Bei den anderen hab ich als Ausgangsbasis ein Standardsetup für SW5 genutzt und dann noch nodejs nachinstalliert. Also da ist nicht wirklich ein Unterschied. 

Im Prinzip also ein Standard LAMP-Setup + mysql_group_concat anpassen. Composer installieren und ein aktuelles nodejs. Da muss man nichts groß konfigurieren.

@Shopwareianer schrieb:

Ich nutze Sequal Pro. Sowie ich das sehe speichert oder hat er alles als Hyroglyphen drin, was irgendwie mit einer ID zu tun hat. 

Sicher, dass das Programm mit binary Feldern umgehen kann? Bspw. mysql workbench kann das auch nicht.

Die Felder haben halt keine „einfachen“ Daten. In PHPMyAdmin sehen die so aus:

 

@Moritz Naczenski schrieb:

@Shopwareianer schrieb:

Ich nutze Sequal Pro. Sowie ich das sehe speichert oder hat er alles als Hyroglyphen drin, was irgendwie mit einer ID zu tun hat. 

Sicher, dass das Programm mit binary Feldern umgehen kann? Bspw. mysql workbench kann das auch nicht.

Die Felder haben halt keine „einfachen“ Daten. In PHPMyAdmin sehen die so aus:

  image

Unabhängig davon ob Sequal Pro es korrekt anzeigen kann oder nicht, müsste ja das Backend funktionieren. Und auch im Frontend bekomme ich ja diesen Encoding Fehler - Irgendwas scheint da eben nicht zu stimmen … Ich weiß nur net was … :frowning:
Ob SP das kann, weiß ich gar net. Sehe ich gerade zum ersten mal den Fehler. Auch mit dem PW Hash :D 

Sollten die Datenbank und die Tabellen nicht ut8_unicode_ci sein? Oder unterstützt die zukünftige Version Multibyte?

Ich hatte mir auch unter Version 5 schon Staging- und Backup-Umgebungen falsch aufgesetzt, weil ich ut8mb4_unicode_ci statt ut8_unicode_ci verwendet hatte. (Die Verbindung darf ruhig ut8mb4_unicode_ci sein.)

@Shopwareianer schrieb:

@Moritz Naczenski schrieb:

@Shopwareianer schrieb:

Ich nutze Sequal Pro. Sowie ich das sehe speichert oder hat er alles als Hyroglyphen drin, was irgendwie mit einer ID zu tun hat. 

Sicher, dass das Programm mit binary Feldern umgehen kann? Bspw. mysql workbench kann das auch nicht.

Die Felder haben halt keine “einfachen” Daten. In PHPMyAdmin sehen die so aus:

  image

Unabhängig davon ob Sequal Pro es korrekt anzeigen kann oder nicht, müsste ja das Backend funktionieren. Und auch im Frontend bekomme ich ja diesen Encoding Fehler - Irgendwas scheint da eben nicht zu stimmen … Ich weiß nur net was … :(
Ob SP das kann, weiß ich gar net. Sehe ich gerade zum ersten mal den Fehler. Auch mit dem PW Hash :D 

Vielleicht liegt es am Encoding der Dateien?
Die Storefront zieht die Snippets auch aus JSON-Dateien, der Fehler kann also auch aus der Datei für die Textbausteine kommen, da dort die Umlaute falsch formatiert sind. Eigentlich sollte aber bei einem “git clone” da kein Problem entstehen.

Nachstellen kann ich das zumindest lokal nicht, das Setup was ich habe läuft schon mehrere Monate stabil. 

[@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski “Moritz Naczenski”)‍:

Okay. Ich muss einfach noch mal etwas testen. 
Macht es denn überhaupt Sinn jetzt schon mit der Geschichte zu starten? Ich habe gerade bspw. mal versucht eines der Beispiel-Plugins zu installieren. Auch dies geht leider nicht. Er meckert, dass er eine composer.json im Plugin-Ordner nicht laden kann, die im Beispiel überhaupt nicht vorgesehen ist. Wenn ich die Anlege geht es weiter mit den Fehlern

dreischild@dreischild:~/shopware-dev/custom/plugins/SwagExample$ ls -al
insgesamt 24
drwxr-xr-x 4 dreischild www-data 4096 Mär 20 12:50 .
drwxr-sr-x 3 dreischild www-data 4096 Mär 20 12:40 ..
-rw-r--r-- 1 dreischild dreischild 268 Mär 20 12:50 composer.json
drwxr-xr-x 2 dreischild www-data 4096 Dez 24 08:18 Controller
drwxr-xr-x 2 dreischild www-data 4096 Dez 24 10:17 Resources
-rw-r--r-- 1 dreischild www-data 130 Dez 21 10:43 SwagExample.php
dreischild@dreischild:~/shopware-dev/custom/plugins/SwagExample$ ../../../bin/console plugin:refresh

Shopware Plugin Service
=======================


In FieldExceptionStack.php line 22:
                                                                                    
  Mapping failed, got 1 failure(s). Array                                           
  (                                                                                 
      [/translations/20080911ffff4fffafffffff19830531/label] => Array               
          (                                                                         
              [validation-error-violation-error] => Array                           
                  (                                                                 
                      [0] => Array                                                  
                          (                                                         
                              [message] => This value should not be blank.          
                              [messageTemplate] => This value should not be blank.  
                              [parameters] => Array                                 
                                  (                                                 
                                      [{{ value }}] => null                         
                                  )                                                 
                                                                                    
                              [propertyPath] => label                               
                          )                                                         
                                                                                    
                  )                                                                 
                                                                                    
          )                                                                         
                                                                                    
  )                                                                                 

 

@dreischild schrieb:

[@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski “Moritz Naczenski”)‍:

Okay. Ich muss einfach noch mal etwas testen. 
Macht es denn überhaupt Sinn jetzt schon mit der Geschichte zu starten? Ich habe gerade bspw. mal versucht eines der Beispiel-Plugins zu installieren. Auch dies geht leider nicht. Er meckert, dass er eine composer.json im Plugin-Ordner nicht laden kann, die im Beispiel überhaupt nicht vorgesehen ist. Wenn ich die Anlege geht es weiter mit den Fehlern

Die Example Plugins sind anscheinend noch nicht aktuell, da ist vor kurzem das Plugin-System erweitert worden:  https://docs.shopware.com/en/shopware-platform-en/plugin-system/plugin-information?category=shopware-platform-en/plugin-system

Moin! Der Fehler mit ARGON2 kommt dann, wenn php ohne argon2 kompiliert wurde. Eigentlich sollte das bei PHP 7.2 standardmäßig so sein.

Das phpmyadmin und andere Clients die Daten nicht korrekt anzeigen musste wir leider auch schon feststellen. Es handelt sich bei den Feldern um UUIDs, welche binär abgespeichert wurden. Ich persönliche nutze https://www.adminer.org/, da klappt die Darstellung problemlos.

 

Aktuell ändert sich noch einiges, es kann daher vorkommen, das die Plugins nicht immer up to date sind.

1 Like

@Jens_K schrieb:

Moin! Der Fehler mit ARGON2 kommt dann, wenn php ohne argon2 kompiliert wurde. Eigentlich sollte das bei PHP 7.2 standardmäßig so sein.

Das phpmyadmin und andere Clients die Daten nicht korrekt anzeigen musste wir leider auch schon feststellen. Es handelt sich bei den Feldern um UUIDs, welche binär abgespeichert wurden. Ich persönliche nutze https://www.adminer.org/, da klappt die Darstellung problemlos.

 

Aktuell ändert sich noch einiges, es kann daher vorkommen, das die Plugins nicht immer up to date sind.

mh … Nutzt jemand von euch OSX mit Homebrew? Ich glaube auch, dass es bei PHP 7.2 bereits drin sein müsste. Habe es nun versucht 7.2 zu reinstallen mit --with-argon2. Bekomme dan allerdings: Error: invalid option: --with-argon2 

Argo2 ist widerrum installiert, aber anscheinend PHP damit nicht kompiliert:

brew install argon2

Warning: argon2 20171227 is already installed and up-to-date

Ich habe nichts dazu gefunden, da es mir komplett neu ist: Aber kann ich irgendwo sehen/testen, ob Argon2 installiert ist? Habe dazu nichts gefunden.

Mit Laravel bspw. klappt der Argon Hash. Vielleicht nutzt Laravel da auch irgendein weiteres Package, keine Ahnung.

Wenn ich bspw. password_hash(‘somepassword’, PASSWORD_ARGON2I, [‘memory_cost’ => 2048, ‘time_cost’ => 4, ‘threads’ => 3]); ausgeben lassen will, derselbe Fehler wie bei Shopware.

@dreischild schrieb:

[@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski “Moritz Naczenski”)‍:

Okay. Ich muss einfach noch mal etwas testen. 
Macht es denn überhaupt Sinn jetzt schon mit der Geschichte zu starten? Ich habe gerade bspw. mal versucht eines der Beispiel-Plugins zu installieren. Auch dies geht leider nicht. Er meckert, dass er eine composer.json im Plugin-Ordner nicht laden kann, die im Beispiel überhaupt nicht vorgesehen ist. Wenn ich die Anlege geht es weiter mit den Fehlern

Ein Kollege hatte noch ein Script für Ubuntu, was bei ihm funktioniert. Vielleicht hilft dir das:

set -e

export DEBIAN_FRONTEND=noninteractive
apt-get update
apt install -y php7.2 libapache2-mod-php php-cli
apt install -y mysql-server apache2
apt install -y composer nodejs npm chromium-browser default-jre-headless git
apt install -y php-gd php-intl php-iconv php-mbstring php-mysql php-xml php-zip php-json
 
/etc/init.d/mysql start 

mysql << EndOfMessage
CREATE USER 'app'@'localhost' IDENTIFIED BY 'app';
GRANT ALL PRIVILEGES ON shopware.* TO 'app'@'localhost';
GRANT ALL PRIVILEGES ON shopware_test.* TO 'app'@'localhost';
GRANT ALL PRIVILEGES ON shopware_e2e.* TO 'app'@'localhost';
FLUSH PRIVILEGES;
EndOfMessage

git clone https://github.com/shopware/development.git $HOME/shopware-dev
cd $HOME/shopware-dev

##todo: entspricht nicht manuellem setup
tee .psh.yaml.override << EndOfMessage
const:
  APP_ENV: "dev"
  APP_URL: "http://shopware.test:8000"
  DB_HOST: "localhost"
  DB_PORT: "3306"
  DB_NAME: "shopware"
  DB_USER: "app"
  DB_PASSWORD: "app"
  CHROME_BIN: "chromium-browser"
EndOfMessage

git clone --depth=1 https://github.com/shopware/platform.git
composer install
npm install -g npm
npm install in vendor/shopware/platform/src/Administration/Resources/administration/

./psh.phar init
./psh.phar administration:init
./psh.phar administration:build

usermod -a -G www-data $(whoami)
chgrp -R www-data $HOME/shopware-dev
find $HOME/shopware-dev -type d -exec chmod g+s '{}' \;
#chmod g+w -R $HOME/shopware-dev/{var,public/{media,thumbnail}}
chmod g+w -R $HOME/shopware-dev/var
#chmod g+w -R $HOME/shopware-dev/public/thumbnail
chmod g+w -R $HOME/shopware-dev/public/media


echo "127.0.0.1 shopware.test" | tee --append /etc/hosts
ln -s $HOME/shopware-dev /var/www/shopware.test

/etc/init.d/apache2 restart

echo "LISTEN 8000


    DocumentRoot "/var/www/shopware.test/public"
    ServerName shopware.test
    
        AllowOverride All
    
" > /etc/apache2/sites-available/shopware.test.conf

# enable shopware vhost
a2ensite shopware.test.conf
# disable default vhost
a2dissite 000-default.conf
# enable mod_rewrite
a2enmod rewrite
# restart apache (changed)
/etc/init.d/apache2 restart

curl http://shopware.test:8000/admin

 

Moin Dennis ( @dreischild‍  ),

wir sind momentan schon dabei die Dokumentation anzupassen und haben für viele Szenarien mittlerweile Beispiel Plugins.
Ich habe dir hier mal ein Beispiel Plugin angehangen, welches nichts wirklich macht, aber vieles einmal anreißt. (Testing suite, Services, Controller, Subscriber, Plugin Config, …)
Das wird so in der Form mal in einem “Plugin quick start” Guide auftauchen - daher auch der Name. :slight_smile:

Hilft dir das erstmal weiter?


@Shopwareianer‍:
Ich nutze das Setup mit MacOS und habe damit absolut keine Probleme.
Tatsächlich konnte ich da auch grob den Ubuntu Guide nutzen - man muss halt nur wissen, wie das jeweilige MacOS Pendant heißt / funktioniert.
Den von dir beschriebenen Fehler habe ich “leider” nicht.
Ich hatte übrigens diesen Guide genutzt, um mehrere PHP Versionen auf meinem System zu installieren - wie hast du das denn gemacht?

1 Like

Zu dem Fehler mit der Passwort Konstante gibt es auch ein Issue auf GitHub Argument 3 passed to PasswordField::__construct() must be of the type integer, string given · Issue #21 · shopware/platform · GitHub Wir müssen hier vielleicht noch mal schauen, ob wir eine andere Verschlüsselung als Default nehmen. 

Viele Grüße aus Schöppingen

cool Michael Telgmann

1 Like

[@Patrick Stahl](http://forum.shopware.com/profile/1869/Patrick Stahl “Patrick Stahl”)‍ Ich nutze Valet Plus. Nur installiert man hier PHP 7.2 per default. Und da scheint wohl Argon nicht mit bei zu sein. Ich habe ebenfalls Argon über Homebrew insatlliert wie hier beschrieben: argon2 Installation on Mac with Brew | BrewInstall.org

Allerdings scheint es, dass ich eben die Homebrew 7.2 Version mit Argon2 kompilieren muss. Nur finde ich dazu keine Infos … :frowning:

 

[@Michael Telgmann](http://forum.shopware.com/profile/17553/Michael Telgmann “Michael Telgmann”)‍ Der Workaround vom Issue hat tatsächlich funktioniert, danke dafür. Ist natürlich keine Dauerlösung. Ich muss mal schauen, wie ich Argon mit kompiliert bekomme … Ich komme nun auf jeden Fall ins Backnd und das Frontend scheint auch halbwegs zu funktionieren.

Im Frontend habe ich jetzt nur noch den Fehler, dass die Javascript Datei auf einen Port referenziert “http://shopware-dev.test:9999/js/main.bundle.js” Da ich Docker & Co. nicht nutze ist dieser nicht erreichbar.

Wie kann ich den Port entfernen, sodass das Frontend hier http://shopware-dev.test/js/main.bundle.js ausgibt? Und: Wofür ist der Port notwendig, für irgendein hot-reloading? Irgendwelche Nachteile, wenn man es entfernt?

PS: Habe es in im vendor storefront base.twig Template gefunden. Allerdings auch wenn ich es entferne und die JS Datei im Frontend geladen wird, scheint das Frontend nicht zu funktionieren. Muss mal schauen, woran es dann hier wieder hapert :smiley:

PS: So sieht übrigens das Frontend bei mir aus. CSS & JS Datei lassen sich über den Quelltext aufrufen.

Imgur