2009-12-15 24 views
5

Aynı kutuda (raylar gibi) çalışan birden çok PHP sürümü olması mümkün mü? İşte benim sorunum, yeni bir proje üzerinde geliştirmeye başlamalıyım ve bunun için en son Zend çerçevesini ve aktif kaydı kullanabilmem için PHP 5.3 kullanmayı planlıyordum.
Ancak, uygulamanızı barındırmam gereken makinede PHP 4.4 var ve orada barındırılan başka uygulamalar da var. PHP versiyonunu yükseltmek istemiyorum, geçmişte olduğu gibi PHP versiyonunu yükseltirken ve kullanımdan kaldırılmış fonksiyonlarla karşılaştım.
Aynı kutuda PHP'nin birden çok sürümüne sahip olup olmadığınızı merak ettim ve bir şekilde uygulamanızı yüklemek istediğiniz sürümü belirtin (raylara benzer)Aynı kutu üzerinde birden fazla PHP sürümü

+0

Bu, sunucu hatası için bir soru gibi görünüyor ... – Myles

cevap

4

Evet, bu mümkün. Aslında, birçok sunucu bu şekilde çalışır. Zaman zaman .php4 ve .php5 uzantılarını, belirli bir betiğin hangi sürümle ele alınması gerektiğini belirten görebilirsiniz.

ServerFault bir olasılıkları bir Apache modülü olarak PHP bir versiyonunu kullanarak bu sorunu

Running php4 and php5 along side each other

0

ve bir CGI olarak diğer versiyonu ele; ama bir fikir ben tür iyidir gibi olması: Apache

  • Çeşitli farklı örneklerini
  • port 44000 üzerinde örneğin farklı bir port (PHP 4.4 üzerindeki her bir dinleme ve PHP 5.3.1 Eğer her istediğiniz her şeyi değiştirebilir/yapılandırabilir
  • ve birbirinden independantly çalışır

Bu şekilde, tamamen farklı çevrelere sahip PHP farklı bir sürümünü kullanarak her biri, ve bağlantı noktası 53100) üzerinde risk almadan çevre Diğerlerinden herhangi birini arıyor.

(Ve URL'lerinizdeki noktası numaralarını olmasını istemiyorsanız, sana farklı Apache durumlarda önünde bir vekil koyabilirsiniz varsayalım, yüzden sadece bir tane görünüyor)

3

Sen Docker kullanarak aynı kutuda birden çok PHP sürümünü çalıştırabilir.

Bir örnek komut olacaktır:

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 

İşte bu komut yaptığı da budur:

  • O iletir senin yerel Docker kabın karşılık gelen klasörlere /var/www, /etc/apache2/sites-available ve /etc/apache2/sites-enabled. Yerel web siteleriniz ve/veya apache yapılandırmanız farklı klasörlerde bulunuyorsa, -v değerinin ilk bölümünü değiştirin. I.e. biçimi şöyledir: docker run -v /host/directory:/container/directory -other -options image_name command_to_run
  • Bu Docker konteyner limanına 80 için yerel makinenin portu 8055 iletir O "codeyourdream/apache-sendmail-php55" görüntü

Eğer kaçarsan gelen kabı çalışır

  • Bu komut, tüm yerel web siteleriniz 8055 numaralı bağlantı noktası üzerinden (yani http://localsite:8055 gibi URL'ler aracılığıyla) ve PHP 5 tarafından işlenmelidir.Daha fazla bilgi için https://codeyourdream.com/blog/how-run-multiple-php-versions-apache-one-linux-machine-using-docker numaralı telefona bakın. Bağlılık notu: Bu, ekibimin blogu.

    İlgili konular