N'php un équivalent python virtualenv ou ruby bac à sable?
Je suis habitué à l'utilisation de python virtualenv outil pour créer des environnements qui peuvent imiter les environnements de déploiement pour les projets que j'écris.
Maintenant, je vais travailler sur un projet php, et je me demande si il y a un équivalent? Clairement, j'espère être en mesure d'exécuter un virtualhost apache avec une vieille version de php, alors que tout le reste fonctionne à la normale jusqu'à la date de la version.
Ma machine de développement est en cours d'exécution ubuntu 11.04, de sorte que les solutions qui fonctionnent sur la plate-forme serait préférable.
- Pourquoi vous voulez avoir quelque chose comme ça? Vous voyez, PHP est fait pour être rétro-compatible. Même entre les différentes 5.versions x, il y a rarement des différences qui serait gênant, et même si ceux qui arrivent, ceux qui sont habituellement faciles à corriger. Par exemple entre PHP 5.3 et 5,2 pas beaucoup de changements hapenned (pl2.php.net/manual/en/migration53.incompatible.php), deux nouveaux mots-clés et certains non valide code ne fonctionne plus...
- Je suis en train de reproduire un environnement de déploiement sur un serveur de développement, de sorte qu'il n'y a pas de surprises quand je déployer, mais je ne veux pas configurer une toute nouvelle machine virtuelle pour chaque environnement de déploiement. Si je pouvais avoir différentes virtualhost dans apache utiliser différentes versions de PHP, je serais un long chemin vers l'accomplissement de cette.
- Docker est votre solution. Vagrant pour une autre solution.
Vous devez vous connecter pour publier un commentaire.
En supposant que vous utilisez mod_php, il n'y a aucun moyen de charger de multiples versions différentes dans la même instance d'Apache. Vous pouvez exécuter plusieurs versions différentes si vous utilisez PHP comme CGI ou FastCGI, mais ce sera lui-même introduire des différences dans le comportement de mod_php.
Que le chargement des différentes versions de php dans apache avec mod_php ne semble pas être possible, le moyen le plus facile d'imiter le déploiement et le développement des configurations sera avec un virtualmachine, qui vous a indiqué que vous souhaitez éviter.
Une façon de faire de la charge de la machine virtuelle pour les développeurs un peu plus facile est d'utiliser quelque chose comme vagrant. Avec deux fichiers (le vagabond de fichier, et le chef/puppet fichier), vous pouvez "version" de votre vm, facilement les créer et de les détruire pour chaque projet et en cas de besoin.
Une autre alternative aux machines virtuelles est docker.
virtPHP est un outil pour la création et la gestion de plusieurs isolé PHP environnements sur une seule machine. C'est comme Python virtualenv, mais pour PHP. (Lisez-moi)
https://github.com/virtphp/virtphp
Vous pourriez être intéressé par ce: https://github.com/phpenv/phpenv
(N'ai pas codé en php dans ans, donc cela pourrait être obsolète)
Comme je me souviens bien vous avez juste à point à un autre répertoire où vos bibliothèques de résidence (CHEMIN de), en utilisant quelque chose comme:
et dans vos fichiers php:
PHP n'a jamais vraiment eu un robuste système de packaging et de la bibliothèque de dépôt comme perl/python/ruby, POIRE a été d'essayer d'aller dans cette direction, mais il est très fermé, en comparaison, est difficile à configurer dans le multiprojet environnements.
Phark est en train de construire un brew/bundler port pour php, https://github.com/lox/phark, bien qu'il n'est pas de déploiement de prêt.
Comme de maintenant, il n'y a pas de solution à ce problème. La seule solution qui s'approche est Erratique et puPHPet.com comme discuté ici: https://drupal.org/node/2055947
Pourquoi ne pouvons-nous pas avoir un environnement comme le python virtualenv ou ruby rbenv? C'est un beau projet open source. Plusieurs instances de PHP peut être pratique si nous voulons tester des bibliothèques dans des bacs à sable plutôt que globalement. Nous pouvons installer les dépendances pour les différents projets à l'aide d'un gestionnaire de paquets comme Compositeur.