2009-12-15 28 views
5

Est-il possible d'avoir plusieurs versions de PHP en cours d'exécution sur la même boîte (comme les rails). Voici mon problème, j'ai besoin de commencer le développement sur un nouveau projet et prévoyais d'utiliser PHP 5.3 pour que je puisse utiliser le dernier framework Zend et l'enregistrement actif avec.
Cependant la machine où j'ai besoin d'héberger mon application a PHP 4.4 et il y a plusieurs autres applications hébergées ici. Je ne veux pas mettre à jour la version de PHP sur le serveur comme par le passé j'ai dû faire face à de nombreux problèmes lors de la mise à niveau de la version de PHP et des fonctions obsolètes.
Je me demandais s'il était possible d'avoir plusieurs versions de PHP sur la même boîte et de spécifier la version que vous voulez charger (similaire aux rails)Plusieurs versions de PHP sur la même case

+0

On dirait que c'est une question de faute de serveur ... – Myles

Répondre

4

Oui, c'est possible. En fait, de nombreux serveurs fonctionnent de cette façon. Vous pouvez voir de temps en temps les extensions .php4 et .php5 indiquant la version avec laquelle ce script particulier doit être traité.

ServerFault a abordé cette question

Running php4 and php5 along side each other

0

Une possiblité utilise une version de PHP en tant que module Apache, et l'autre version en tant que CGI; mais une idée je aime bien mieux est d'avoir:

  • Plusieurs instances distinctes d'Apache,
  • Chacun écoute sur un port différent (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 b rider 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'un seul)

3

Vous peut 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 les configurations Apache se trouvent dans des dossiers différents, remplacez la première partie de la valeur -v. I.e. le format est: 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 court le récipient de "codeyourdream/apache-sendmail-php55" image

Si vous exécutez cette commande, tous vos sites locaux devraient être disponibles via le port 8055 (ie via des URL comme http://localsite:8055) et traités par PHP 5.Pour plus de détails, voir https://codeyourdream.com/blog/how-run-multiple-php-versions-apache-one-linux-machine-using-docker. Note d'affiliation: c'est le blog de mon équipe.