2016-08-04 9 views
1

definieren Ich konfiguriere Docker Compose Datei und ich muss eine PHP-Version angeben. Nehmen wir an, ich definiere einfach php:7-fpm. Kann ich sicher sein, dass PHP Version 7.1 nicht inkompatibel wird?PHP - Wie genau sollte ich die Version

Welche der folgenden Möglichkeiten gibt es, um die Version zu definieren, und warum?

php 7 
php 7.0 
php 7.0.9 
+3

PHP 7.0 ist wahrscheinlich der Weg zu gehen. PHP 7 deckt zu viel ab und PHP 7.0.9 ist zu restriktiv (da kleinere Revisionen im Allgemeinen nicht die Abwärtskompatibilität innerhalb der gleichen Hauptversion durchbrechen) – apokryfos

+2

@apokryfos - aus Interesse, diese spezifische Version (zB PHP 7.0.9) * hat * eine BC-Unterbrechung eingeführt, die [einige Verzweigungen] verursacht hat (https://github.com/joomla/joomla-cms/pull/11360). Die PHP-Entwickler [werden es offenbar für 7.0.10] zurückstellen (https://bugs.php.net/bug.php?id=72698), obwohl es für 7.1 wieder eingeführt wird. – Simba

+0

@Simba, das war nicht mit Absicht. Es sollte generell nicht passieren. – apokryfos

Antwort

4

Viele große Software-Projekte verwenden Semantic Versioning. So ist beispielsweise in der Versionsnummer X.Y.Z die X die "Major" -Version, die Y ist die "Minor" -Version und die Z ist die "Patch" -Version. Software nach den semver Spezifikation Schritten:

MAJOR Version, wenn Sie nicht kompatibel API Änderungen vornehmen,

kleinere Version, wenn Sie Funktionalität in einem rückwärtskompatiblen Weise hinzufügen und

PATCH Version, wenn Sie rückwärts machen -kompatibler Fehler behoben.

PHP folgt jedoch nicht der semver Spezifikation!

Viele große PHP-Projekte verwenden es, aber die Sprache selbst nicht. Im Fall der PHP-Sprache selbst kann es (und gibt es) brechende Änderungen in der "kleinen" Versionsnummer, nicht nur der "großen" Versionsnummer. Normalerweise sind wir an Bugfixes und möglicherweise an anderen abwärtskompatiblen Änderungen interessiert. Aber wir sind definitiv nicht an Veränderungen interessiert, die unsere Software kaputt machen und zum Feuerwehrmann machen.

Ich sage Ihnen über die semver Spezifikation, weil für die meisten Projekte im Universum aus, möchten Sie eine neuere Version verwenden, um die Hauptversion, zu erklären und dann neuere kleinere und Patch-Versionen akzeptieren, wie redis:3 für Beispiel (eigentlich Redis ist eine Art schlechtes Beispiel, weil es nicht genau verwenden Sie sverver, aber schließen). Aber hier speziell mit PHP, müssen Sie genauer sein, da Sie nur für nichtbrechende Änderungen suchen.

Daher ist wahrscheinlich php:7.0-fpm, was Sie suchen.

Verwandte Themen