La Force de compositeur pour exiger la Version de PHP entre les Version X et Version Y
nous avons un mélange de versions différentes de PHP en cours d'exécution sur vos serveurs (max 5.3.5) et le développement des machines (max 5.5.9).
Maintenant que nous avons rencontré le problème que nous avons fait un "compositeur de mise à jour" pour obtenir la Version la plus récente de certains Faisceaux externes.
Depuis votre compositeur.json ressemble
"require": {
"php": ">=5.3.3",
.....
},
nous obtenons certains Bundles requis PHP 5.5. Pas de problème sur nos machines de dev, mais sur le serveur 🙁
Est-il possible de dire compositeur d'exiger un PHP version 5.3.3 et 5.3.5? Ou un max Version disponible?
J'ai essayé
"require": {
"php": ">=5.3.3, <=5.3.5",
.....
},
et
"require": {
"php": "<=5.3.5",
.....
},
mais les deux n'ont pas fonctionné. "Le paquet demandé php n'a pas pu être trouvé dans n'importe quelle version, il y a peut être une faute de frappe dans le nom du package." Erreur.
Des Idées? Merci d'avance
Vous devez vous connecter pour publier un commentaire.
Je trouve ça discutable à-dire moins que vous développez avec le nouveau PHP disponibles et sont en cours d'exécution de la production, avec une très ancienne version. Il y aura beaucoup de problèmes possibles découlant de ce, pas seulement en raison de correctifs de sécurité que vous seriez en manque, mais plus important encore, en raison de PHP correctifs de bogues qui a introduit pour la plupart dans les versions 5.3.9 et 5.3.23 que les changements de comportement PHP dans certains détails assez fondamentalement. Ne parle pas du risque de accidentellement à l'aide de fonctionnalités de 5.4 ou 5.5.
Et il n'y a vraiment aucun moyen de faire Compositeur face à cette situation. La version de PHP qui est utilisé lors de l'exécution de
composer update
détermine la résolution de dépendances, d'être influencé par la version de PHP et installé des extensions PHP.Vous ne pouvez définir qu'un paquet doit être utilisé uniquement pour les versions de PHP antérieures entre 5.3.3 et 5.3.5 si le PHP que vous utilisez pour la mise à jour ne correspond pas à cette version exigence. Parce que le PHP version dépasse la version supérieure de contrainte, ce forfait n'est pas admissible pour l'accomplissement de la version d'exigence et de Compositeur rapports qu'aucun paquet n'a été trouvé (pas de raconter qu'il a vu les paquets, mais ils ont dû être ignorés à cause de la version de contrainte).
Il y a probablement trois, de manière évidente, sortie:
Downgrade de votre environnement de développement pour la version de production, vous êtes vraiment les utiliser. Si plus d'un est utilisé: La plus ancienne. De cette façon, toutes les exigences pour les versions de PHP seront appariés. Exécuter
composer update
alors, et vous avez terminé.Mise à niveau de votre environnement de production. Besoin d'aucune autre explication, mais je dois mentionner que non seulement vous avez perdu beaucoup de très belles fonctionnalités PHP, vous manque aussi une augmentation considérable des performances, parce que PHP 5.5 est vraiment beaucoup plus rapide que 5.3.
Ajouter un "platform.php" configuration soit le global ou le projet du compositeur.json. Cela indiquera à Composer pour remplacer la version de PHP exécute le Compositeur lui-même, et, au lieu de calculer les dépendances avec les différentes version de PHP.
composer config -g platform.php 5.3.5
pour le paramètre global (affectera tous les autres Compositeur pistes), sans-g
local (ce paramètre n'affecte Compositeur opérations dans ce projet, dans le cas où vous développez sur plus d'un projet avec la production différentes versions de PHP).composer.lock
?Depuis la config paramètre dans compositeur.json est disponible. Vous pourriez quelque chose comme ceci:
https://getcomposer.org/doc/06-config.md#platform
config.platform.php
est destiné à résoudre exactement le problème dans cette question, et il fonctionne. Peut-être le compositeur de la version utilisée n'était pas encore ça.composer update
après la définition de cette, tout comme toute autre dépendance liée au changement decomposer.json
.Qu'en essayant de l'opérateur tilde
Prochaine Version (Tilde Opérateur)#
L' ~ opérateur est mieux expliqué par l'exemple:
~1.2 est équivalent à
Note: Bien que l'2.0-bêta.1 est strictement avant
2.0, une version contrainte comme
~1.2 ne serait pas l'installer. Comme
dit ci-dessus ~1.2 signifie seulement la
.2 peut changer, mais la
1. le cadre est fixe.
Remarque: Le ~ opérateur a une exception de son comportement pour le numéro de version majeure. Cela signifie pour
exemple ~1 est le même que
~1.0 comme elle ne permettra pas de le nombre important d'augmenter en essayant de garder
rétro-compatibilité.
Essayez ceci (enlever la virgule):
Supprimer votre compositeur.verrouillage et vendeur répertoire.
Maintenant place plate-forme option pour compositeur.json
et enfin, exécutez la commande compositeur installer
Oui, là, il en est un:
P. S. j'ai obtenu ici de moteur de recherche, mais ne trouvez pas de réponse ici, alors quand je l'ai trouvé sur le Compositeur du site, j'ai décidé de le poster ici. Espérons que cela aide quelqu'un qui a été là, comme je l'ai fait.