2009-12-15 23 views
5

È possibile avere più versioni di PHP in esecuzione sulla stessa casella (come le guide). Ecco il mio problema, ho bisogno di iniziare lo sviluppo su un nuovo progetto e ho intenzione di utilizzare PHP 5.3 per questo in modo da poter utilizzare l'ultimo framework Zend e il record attivo con esso.
Tuttavia la macchina su cui ho bisogno di ospitare la mia applicazione ha PHP 4.4 e ci sono diverse altre applicazioni ospitate lì. Non voglio aggiornare la versione di PHP sul server come in passato ho dovuto affrontare un sacco di problemi durante l'aggiornamento della versione di PHP e funzioni obsolete.
Mi chiedevo se è possibile avere più versioni di PHP sulla stessa casella e quindi in qualche modo specificare la versione che vuoi caricare la tua applicazione (simile alle guide)Più versioni PHP nella stessa casella

+0

Sembra che questa sia una domanda per l'errore del server ... – Myles

risposta

4

Sì, è possibile. In effetti, molti server funzionano in questo modo. Di tanto in tanto potresti vedere estensioni .php4 e .php5 che indicano con quale versione deve essere gestito quel particolare script.

ServerFault affrontato questo problema

Running php4 and php5 along side each other

0

Un possiblity utilizza una versione di PHP come modulo Apache, e l'altra versione come CGI; ma un'idea che ho un po 'come meglio avere:

  • Diversi casi distinti di Apache,
  • Ognuno di ascolto su una porta diversa (per esempio, PHP 4.4 sulla porta 44000, e PHP 5.3.1 sulla porta 53100)
  • e ognuno con una diversa versione di PHP

questo modo, si hanno ambienti totalmente diversi, che funziona in modo indipendente l'uno dall'altro, ed è possibile configurare/modificare tutto quello che vuoi in ogni ambiente senza rischi b Riacquistare qualcuno degli altri.

(E se non si vuole avere numeri di porta negli URL, suppongo che si può mettere un proxy di fronte a istanze di Apache distinte, quindi sembra che ci sia una sola)

3

È può eseguire più versioni di PHP sulla stessa scatola usando Docker.

Un comando esempio potrebbe essere:

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 

Ecco cosa fa questo comando:

  • Inoltra il tuo locale /var/www, /etc/apache2/sites-available e /etc/apache2/sites-enabled ai corrispondenti cartelle del contenitore Docker. Se i siti Web locali e/o le configurazioni di Apache si trovano in cartelle diverse, sostituire la prima parte del valore -v. I.e. il formato è: docker run -v /host/directory:/container/directory -other -options image_name command_to_run
  • Si inoltra la porta 8055 del computer locale alla porta 80 di container Docker
  • Si corre il contenitore da un'immagine

Se si esegue "codeyourdream/apache-sendmail-php55" questo comando, tutti i siti Web locali dovrebbero essere disponibili tramite la porta 8055 (ovvero tramite URL come http://localsite:8055) ed elaborati da PHP 5.5

Vedere https://codeyourdream.com/blog/how-run-multiple-php-versions-apache-one-linux-machine-using-docker per ulteriori dettagli. Nota di affiliazione: questo è il blog della mia squadra.

Problemi correlati