Le versioni di PHP multiple sulla stessa scatola
-
19-09-2019 - |
Domanda
E 'possibile avere più versioni di PHP in esecuzione sulla stessa macchina (come binari). Qui è il mio problema, ho bisogno di iniziare lo sviluppo su un nuovo progetto e avevo intenzione di usare PHP 5.3 per esso in modo da poter utilizzare l'ultima framework Zend e record attivo con esso.
Tuttavia la macchina in cui ho bisogno per ospitare il mio 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 affrontato un sacco di problemi durante l'aggiornamento della versione di PHP e le funzioni deprecate.
Mi chiedevo se è possibile avere più versioni di PHP sulla stessa macchina e quindi in qualche modo specificare la versione che si desidera che l'applicazione per caricare (simile alle rotaie)
Soluzione
Sì, è possibile. In realtà, molti server funzionano in questo modo. Si può vedere estensioni .php4 e .php5 di volta in volta indicare quale versione quel particolare script deve essere maneggiato con.
ServerFault rivolto questa domanda
Altri suggerimenti
È possibile eseguire più versioni di PHP sulla stessa scatola con finestra mobile.
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:
- Si inoltra la tua
/var/www
locali,/etc/apache2/sites-available
e/etc/apache2/sites-enabled
ai corrispondenti cartelle del contenitore Docker. Se i vostri siti web locali e / o configurazioni Apache si trovano in cartelle diverse, sostituire la prima parte del valore-v
. Cioè il formato è il seguente: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 "codeyourdream / apache-sendmail-php55" immagine
Se si esegue questo comando, tutti i siti web locali dovrebbero essere disponibili tramite la porta 8055 (vale a dire gli URL tramite come http: // localsite: 8055 ) e trattate da PHP 5.5
Vedere https://codeyourdream.com/blog/how-run-multiple-php-versions-apache-one-linux-machine-using-docker per maggiori dettagli. Nota Affiliazione:. questo è il blog di mia squadra
A possiblity utilizza una versione di PHP come modulo Apache, e l'altra versione come CGI; ma un'idea che ho un po 'come migliore è quello di 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
In questo modo, si dispone di ambienti totalmente diversi, che funziona in modo indipendente l'uno dall'altro, ed è possibile configurare / modificare tutto quello che vuoi in ogni ambiente senza rischiare la rottura di tutti gli 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)