Question

Est-il possible d'avoir plusieurs versions de PHP en cours d'exécution sur la même boîte (comme des rails). Voici mon problème, je dois commencer le développement sur un nouveau projet et prévoyait d'utiliser PHP 5.3 pour cela pour que je puisse utiliser le dernier Zend Framework et enregistrement actif avec elle.
Cependant la machine où je dois héberger mon application a PHP 4.4 et il y a plusieurs autres applications hébergées là-bas. Je ne veux pas mettre à jour la version de PHP sur le serveur comme dans le passé, je l'ai fait face à beaucoup de problèmes lors de la mise à niveau de la version PHP et les fonctions dépréciées.
Je me demandais s'il est possible d'avoir plusieurs versions de PHP sur la même case, puis en quelque sorte spécifier la version que vous souhaitez que votre application charge (similaire aux rails)

Était-ce utile?

La solution

Oui, il est possible. En fait, de nombreux serveurs fonctionnent de cette façon. Vous pouvez voir .php4 et extensions .php5 de temps en temps indiquant quelle version ce script particulier doit être manipulé avec.

ServerFault a abordé cette question

course php4 et php5 le long de l'autre côté

Autres conseils

Vous pouvez exécuter plusieurs versions de PHP sur la même boîte en utilisant Docker.

Un exemple de commande serait:

sudo docker run -d -p 8055:80 -v /var/www:/var/www \
  -v /etc/apache2/sites-available:/etc/apache2/sites-available \
  -v /etc/apache2/sites-enabled:/etc/apache2/sites-enabled \
  codeyourdream/apache-sendmail-php55

Voici ce que cette commande fait:

  • Il transmet votre /var/www local, /etc/apache2/sites-available et /etc/apache2/sites-enabled aux dossiers correspondants du conteneur Docker. Si vos sites Web locaux et / ou configs apache sont situés dans des dossiers différents, remplacer la première partie de la valeur -v. C'est à dire. le format est le suivant: docker run -v /host/directory:/container/directory -other -options image_name command_to_run
  • Il transmet le port 8055 de votre machine locale sur le port 80 du conteneur Docker
  • Il utilise le conteneur de l'image "codeyourdream / apache-sendmail-php55"

Si vous exécutez cette commande, tous vos sites Web locaux devraient être disponibles via le port 8055 (par exemple via des URL comme http: // localsite: 8055 ) et traité par 5,5 PHP

Voir https://codeyourdream.com/blog/how-run-multiple-php-versions-apache-one-linux-machine-using-docker pour plus de détails. Note d'affiliation. c'est le blog de mon équipe

A possibilité est d'utiliser une version de PHP en tant que module Apache, et l'autre version en tant que CGI; mais une idée j'aime bien mieux est d'avoir:

  • Plusieurs instances distinctes d'Apache,
  • Chacun écoute sur un autre port (par exemple, PHP 4.4 sur le port 44000 et PHP 5.3.1 sur le port 53100)
  • Et chacun en utilisant une autre version de PHP

De cette façon, vous avez des environnements totalement différents, qui fonctionne indépendamment les uns des autres, et vous pouvez configurer / modifier tout ce que vous voulez dans chaque environnement sans risquer de briser l'un des autres.

(Et si vous ne voulez pas avoir des numéros de port dans vos URL, je suppose que vous pouvez mettre un proxy devant vos instances distinctes Apache, il semble qu'il n'y ait qu'une seule)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top