Hat PHP ein Äquivalent zu Pythons Virtualenv oder Ruby-Sandbox?

  • Ich bin es gewohnt, das Virtualenv-Tool von python zu verwenden, um separate Umgebungen zu erstellen, die Implementierungsumgebungen für von mir geschriebene Projekte imitieren können.

    Nun bin ich werde an einem php-projekt arbeiten und ich frage mich, ob es gleichwertig ist? Insbesondere hoffe ich, einen virtuellen Host auf Apache mit einer (älteren) Version von PHP ausführen zu können, während alles andere auf der normalen aktuellen Version läuft.

    Meine Entwicklung Die Maschine läuft auf Ubuntu 11.04, daher sind Lösungen zu bevorzugen, die auf dieser Plattform funktionieren.

    28 September 2011
    Zxaos
7 answers
  • Wenn Sie mod_php verwenden, gibt es keine Möglichkeit, mehrere verschiedene Versionen in dieselbe Apache-Instanz zu laden. Sie können mehrere verschiedene Versionen ausführen, wenn Sie PHP als CGI oder FastCGI ausführen. Dies führt jedoch zu einigen Unterschieden im Verhalten von mod_php

    28 September 2011
    duskwuff
  • Da das Laden verschiedener Versionen von PHP innerhalb von Apache mit mod_php nicht möglich erscheint, können Sie Implementierungs- und Entwicklungs-Setups am einfachsten mit einer virtuellen Maschine nachahmen, von der Sie sagen, dass Sie sie vermeiden möchten.

    Eine Möglichkeit, die Belastung durch vm's für Entwickler etwas zu vereinfachen, ist die Verwendung von vagrant . Mit zwei Dateien (der Vagrant-Datei und der Chef- / Puppet-Datei) können Sie Ihre VMs "versionieren", sie einfach erstellen und für jedes Projekt und bei Bedarf zerstören.

    30 September 2011
    ashwoods
  • Eine andere Alternative zu virtuellen Maschinen ist Andockfenster .

    19 July 2013
    mozey
  • virtPHP ist ein Tool zum Erstellen und Verwalten mehrerer isolierter PHP-Umgebungen auf einem einzigen Computer. Es ist wie Pythons Virtualenv, aber für PHP. (README)

    https://github.com/virtphp/virtphp

    26 March 2015
    ecurbelo
  • Das könnte Sie interessieren: https://github.com/phpenv/phpenv

    30 October 2014
    smg628
  • (Hat PHP seit Jahren nicht mehr verschlüsselt, könnte dies veraltet sein)

    Soweit ich mich erinnere, mussten Sie nur auf ein anderes Verzeichnis verweisen, in dem sich Ihre Bibliotheken befinden reside (include PATH) und verwende etwa:

     include_path = .:/usr/local/lib/php:./include (this goes in php.ini, default libararies)
     

    und in deinen PHP-Dateien:

     ini_set("include_path", ".:../:./include:../include");
     

    PHP hatte nie wirklich ein stabiles Paketsystem und ein Bibliotheks-Repository wie Perl / Python / Ruby, in dem PEAR versucht hat Richtung, aber es ist im Vergleich sehr geschlossen und war in Multiprojektumgebungen schwer zu konfigurieren.

    Phark versucht, einen Brew / Bundler-Port für PHP, https zu erstellen : //github.com/lox/phark , ist jedoch nicht bereit für die Bereitstellung.

    24 September 2011
    ashwoods
  • Derzeit gibt es keine sofortige Lösung für dieses Problem. Die einzige Lösung, die dieser Lösung nahe kommt, sind Vagrant und puPHPet.com Warum können wir keine Umgebung wie Pythons virtualenv oder ruby's rbenv haben? Es ist ein schönes Open-Source-Projekt. Mehrere Instanzen von PHP können hilfreich sein, wenn Sie einige Bibliotheken in Sandboxen statt global testen möchten. Wir können Abhängigkeiten für verschiedene Projekte mit einem Paketmanager wie Composer installieren.

    10 December 2013
    Rajiv Charan Tej K