Heinrich Schiller  18.02.2022 20:48

Symfony Umgebung mit Scoop installieren

Vor einigen Tagen habe ich eine kleine Anleitung geschrieben wie ich die Symfony Cli unter Windows installieren kann. Dabei bin ich meist händisch vorgeganen. In den Symfony Dokumentation über die Installation der Symfony-CLI habe ich dann Scoop kennen gelernt, aber zunächst ignoriert. Wenn aber schon Symfony, Scoop erwähnt dann könnte es durchaus interessant sein. Vielleicht muss ich die Programme nicht unbedingt manuell pflegen, sondern kann mir auch helfen lassen. Also habe ich mir etwas Zeit genommen und mir Scoop etwas angeschaut.

Was ist Scoop?

Scoop ist, laut Beschreibung, ein Command-Line Installer für Windows und für Programmierer entwickelt. Statt die Programme manuell zu holen, kann man mit Hilfe von Scoop und einigen wenigen Befehlen die Programme so in System zu holen. Mit weiteren Befehlen kann man Programme aktualisieren oder auch deinstallieren. Dabei werden die Programme im jeweiligen Benutzerverzeichnis unter scoop-Ordner abgelegt und benötigen damit keine Administrationsrechte. Welche Programme man in Scoop findet, wird unter sogenannten Buckets. Das sind Sammlungen von Programmen die man über Scoop beziehen kann. Eine Liste des Main-Bucket findet man auf Github unter, https://github.com/ScoopInstaller/Main/tree/master/bucket.

Installation von Scoop

Die Installation ist denkbar einfach und laut Beschreibung denkbar einfach. Man öffnet zunächst die PowerShell und gibt zunächst folgendes ein:

Set-ExecutionPolicy RemoteSigned -scope CurrentUser

Damit erlauben wir uns Scoop auf unserem System zu installieren. Anschließend wird Scoop installiert:

Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')

Ist das erledigt, kann man scoop über ein Terminal nutzen. Falls Scoop noch nicht gefunden wird, einfach neue PowerShell starten. Wer Git-Bash statt der PowerShell nutzt, kann Scoop nun auch nutzen.

Wie man Scoop benutzt

Um einen Unterschied besser zu erkennen, empfehle ich meinen Artikel, https://heinrich-schiller.de/public/article/id/57 zumindest zu überfliegen. Das ganze machen wir nämlich nun mit Scoop. Die benötigte Software installiere ich nun wie folgt:

scoop install php
scoop install composer
scoop install symfony-cli

Das wars. Nun kann man php, composer und symfony-cli direkt im Terminal nutzen, weil auch die Pfade automatisch von Scoop eingetragen werden.

Nachträgliche Konfiguration

Nun ist die Software zwar installiert, aber PHP wird in nur in einer Default-Einstellung angeboten. Am einfachsten ist es wohl wenn man zunächst symfony check:requirements ausführt um zu sehen was für einen Betrieb von Symfony notwendig ist. Bei mir sieht es zunächst so aus:

PS C:\Users\schil\deleteme\testapp> symfony check:requirements

Symfony Requirements Checker
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

> PHP is using the following php.ini file:
C:\Users\schil\scoop\apps\php\current\php.ini

> Checking Symfony requirements:

................W..WWW........W


 [OK]

Optional recommendations to improve your setup
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 * mb_strlen() should be available
   > Install and enable the mbstring extension.

 * intl extension should be available
   > Install and enable the intl extension (used for validators).

 * a PHP accelerator should be installed
   > Install and/or enable a PHP accelerator (highly recommended).

 * realpath_cache_size should be at least 5M in php.ini
   > Setting "realpath_cache_size" to e.g. "5242880" or "5M" in
   > php.ini* may improve performance on Windows significantly in some
   > cases.

 * PDO should have some drivers installed (currently available: none)
   > Install PDO drivers (mandatory for Doctrine).


Note  The command console can use a different php.ini file
~~~~  than the one used by your web server.
      Please check that both the console and the web server
      are using the same PHP version and configuration.

Symfony bescheinigt schon zu funktionieren, aber es wäre noch besser wenn folgende Empfehlungen noch gemacht wären. Also bearbeite ich die php.ini unter C:\Users\schil\scoop\apps\php\current\php.ini.

zeile 351: realpath_cache_size = 5M
zeile 923: extension=intl
zeile 926: extension=mbstring
zeile 932: extension=openssl
zeile 934: extension=pdo_mysql
zeile 953: zend_extension=opcache

Hier muss man etwas mehr konfigurieren als wenn man sich PHP manuell auf Windows holt. Wichtig ist das aktivieren der extension=openssl, damit Symfony-CLI und Composer weitere Pakete verschlüsselt holen kann. Wenn man die openssl Extension nicht installiert wird Composer und Symfony darüber monieren und es lässt sich zum Beispiel kein Symfony Projekt installieren. Ein neues symfony check:requirements im Terminal müsste nun wie folgt aussehen:

PS C:\Users\schil> symfony check:requirements

Symfony Requirements Checker
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

> PHP is using the following php.ini file:
C:\Users\schil\scoop\apps\php\current\php.ini

> Checking Symfony requirements:

.............................


 [OK]
 Your system is ready to run Symfony projects


Note  The command console can use a different php.ini file
~~~~  than the one used by your web server.
      Please check that both the console and the web server
      are using the same PHP version and configuration.

Damit ist das Einrichten nun erledigt. Man kann nun neue Symfony Apps erstellen und ausführen.

Weitere Scoop Befehle

Eine Übersicht weitere Scoop Befehle findet man hier, https://github.com/ScoopInstaller/Scoop/wiki/Commands. Die wohl häufigsten Befehle werden wohl scoop update, scoop update Paket, scoop update *, scoop cleanup, scoop uninstall sein.

scoop update - aktualisiert scoop selbst
scoop update Paket - aktualisiert ein bestimmtes Paket
scoop update * - aktualisiert alle Pakete
scoop cleanup - entfernt alte Pakete
scoop uninstall Paket - entfernt ein zuvor installiertes Paket

Aufgetrettene Probleme und Hinweise

Obwohl ich am Anfang scheinbar Composer nutzen konnte, ich konnte es zumindest aufrufen, hat es am Anfang wohl nicht ganz richtig funktioniert. Ich konnte keine Symfony-Webapps erstellen, weil der Symfony-Installer Composer eben nicht finden konnte. Erster Blick auf die Windows-Pfade zeigte zunächst das Composer eingetragen ist. Ich habe versuchsweise einen neuen Pfad zum Composer angelegt, C:\Users\schil\scoop\apps\composer\current. Erst jetzt konnte ich dann auch mit dem Symfony Installer arbeiten. Desweiteren muss in der PHP.ini die extension=openssl aktiviert sein, da sonst Composer unverschlüsselt arbeitet. Wenn es denn arbeitet.

Scoop hat keine globale Konfigurationsdateien für Pakete wie zum Beispiel /etc unter Linux. Wenn man Pakete aktuallisiert muss man damit rechnen alles vom neuen konfigurieren zu müssen. Also obacht wenn man einfach und bedenklos Software aktualisiert.

Fazit

Was ich momentan in Scoop sehe, finde ich interessant. Die Pakete scheinen ziemlich aktuell zu sein. Ob ich nun alles damit nutzen werde, ist für mich im Moment zumindest fraglich. Aber für eine lokale PHP und Symfony Installation könnte es schon eine Alternative zu meinem vorherigen Web ersetzen. Ich nutze zwar vermehrt Docker, aber eine lokale Installation ist auch einfach und immer noch bequem. Scoop werde ich zunächst nebenbei weiter nutzen und schauen wie es sich entwickelt. Momentan sind die Erfahrungen ziemlich positiv.