Czy jest sposób na użycie dwóch wersji PHP w XAMPP?

157

Używamy XAMPP z PHP 7.0, ponieważ nasze nowe produkty wymagają PHP 7.

Ale są stare projekty, które używają takich funkcji, jak mysql_connectitp. Zostały one usunięte w PHP 7.0.

Czy jest więc sposób na łatwą zmianę wersji PHP w XAMPP?

Uwaga : Proszę nie sugerować uaktualniania starego projektu do kompatybilnego z nowymi wersjami, ponieważ nie jestem w stanie tego zrobić z powodu decyzji, których nie mogę podjąć jako programista (tylko pracownik).

Jestem Najgłupszą Osobą
źródło
Nie sądzę, że istnieje obejście tego, co chcesz zrobić poza uaktualnieniem. Nie powinieneś także szukać sposobów na dostosowanie starego i przestarzałego interfejsu API. Należy je całkowicie usunąć. Oczywiście to dużo pracy, ale to zagwarantuje spokój
Rotimi
1
Zatrzymuję i uruchamiam Apache, gdy chcę zmienić wersje PHP w MAMP. To bolesne, ale działa.
Scott C Wilson
możesz podwójny rozruch
możesz utworzyć wirtualnego hosta, a następnie określić wersję php dla każdego z nich
Aref Ben Lazrek
2
@IlmariKaronen Chcę przełączać się między nimi na twojej programistycznej stacji roboczej. Po prostu chcę używać PHP 5, kiedy robię projekt A, chcę PHP 7, kiedy robię projekt B. Nawet najwyżej oceniona odpowiedź nie działa, nie mogę jej znaleźć ... I wielu użytkowników ...
Ja jestem najgłupszą osobą.

Odpowiedzi:

133

Po co przełączać się między wersjami PHP, skoro można używać wielu wersji PHP w tym samym czasie przy jednej instalacji xampp ? Dzięki pojedynczej instalacji xampp masz 2 opcje:

  1. Uruchom starszą wersję PHP tylko dla katalogu Twojego starego projektu: będzie to służyć przez większość czasu, możesz mieć jeden lub dwa stare projekty, które zamierzasz uruchomić ze starszą wersją PHP. Po prostu skonfiguruj xampp do uruchamiania starszej wersji PHP tylko dla tych katalogów projektu.

  2. Uruchom starszą wersję PHP na oddzielnym porcie xampp: Czasami możesz aktualizować i stary projekt do najnowszej wersji PHP, gdy musisz uruchomić ten sam projekt na nowej i starszej wersji PHP w tę iz powrotem. Następnie możesz ustawić starszą wersję PHP na innym porcie (powiedzmy 8056), więc kiedy przejdziesz do http://localhost/any_project/xampp, uruchomi PHP 7, a kiedy przejdziesz do http://localhost:8056/any_project/xampp, uruchomi PHP 5.6.

  3. Uruchom starszą wersję PHP na virtualhost: Możesz utworzyć virtualhost, taki jak localhost56, aby uruchomić PHP 5.6, podczas gdy możesz używać PHP 7 na hoście lokalnym.

Skonfigurujmy to.

Krok 1: Pobierz PHP

Więc masz PHP 7 działające pod xampp, chcesz dodać do niego starszą wersję PHP, powiedzmy PHP 5.6. Pobierz wersję nts (Non Thread Safe) archiwum zip PHP z php.net (zobacz archiwum dla starszych wersji) i rozpakuj pliki w c:\xampp\php56. Wersja bezpieczna wątkowo nie zawiera php-cgi.exe.

Krok 2: Skonfigurujphp.ini

Otwórz c:\xampp\php56\php.iniplik w notatniku. Jeśli plik nie istnieje, skopiuj php.ini-developmentgo php.inii otwórz w notatniku. Następnie odkomentuj następujący wiersz:

extension_dir = "ext"

Krok 3: Skonfiguruj Apache

Otwórz panel sterowania xampp, kliknij przycisk konfiguracji dla apache i kliknij Apache (httpd-xampp.conf). Plik tekstowy otworzy się i umieści następujące ustawienia na dole pliku:

ScriptAlias /php56 "C:/xampp/php56"
Action application/x-httpd-php56-cgi /php56/php-cgi.exe
<Directory "C:/xampp/php56">
    AllowOverride None
    Options None
    Require all denied
    <Files "php-cgi.exe">
        Require all granted
    </Files>
</Directory>

Uwaga: Jeśli chcesz, możesz dodać więcej wersji PHP do swojej instalacji xampp, wykonując kroki od 1 do 3.

Krok 4 (opcja 1): [Dodaj katalogi, aby uruchomić określoną wersję PHP]

Teraz możesz ustawić katalogi, które będą działały w PHP 5.6. Po prostu dodaj poniższy tekst na dole pliku konfiguracyjnego, aby ustawić katalogi.

<Directory "C:\xampp\htdocs\my_old_project1">
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php56-cgi
    </FilesMatch>
</Directory>

<Directory "C:\xampp\htdocs\my_old_project2">
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php56-cgi
    </FilesMatch>
</Directory>

Krok 4 (opcja 2): [Uruchom starszą wersję PHP na osobnym porcie]

Teraz, aby ustawić PHP v5.6 na port 8056, dodaj następujący kod na końcu pliku konfiguracyjnego.

Listen 8056
<VirtualHost *:8056>
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php56-cgi
    </FilesMatch>
</VirtualHost>

Krok 4 (opcja 3): [Uruchom starszą wersję PHP na serwerze wirtualnym]

Aby utworzyć virtualhost (localhost56) w katalogu (htdocs56), aby używać PHP v5.6 na http: // localhost56 , utwórz katalog htdocs56 w żądanej lokalizacji i dodaj localhost56 do pliku hosts ( zobacz, jak ), a następnie dodaj następujący kod na dole pliku httpd-xampp.conf.

<VirtualHost localhost56:80>
    DocumentRoot "C:\xampp\htdocs56"
    ServerName localhost56
    <Directory "C:\xampp\htdocs56">
        Require all granted    
    </Directory>
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php56-cgi
    </FilesMatch>
</VirtualHost>

Zakończ: Zapisz i uruchom ponownie Apache

Zapisz i zamknij plik konfiguracyjny, uruchom ponownie apache z panelu sterowania Xampp. Jeśli wybrałeś opcję 2, możesz zobaczyć dodatkowy port (8056) wymieniony w panelu sterowania xampp.

wprowadź opis obrazu tutaj

Aktualizacja z powodu błędu:
zniekształcony nagłówek skryptu „php-cgi.exe”: nieprawidłowy nagłówek

Jeśli napotkasz powyższy błąd, otwórz httpd-xampp.confponownie i zakomentuj następujący wiersz z początkowym znakiem # (znak krzyżyka).

SetEnv PHPRC "\\path\\to\\xampp\\php"
Munim Munna
źródło
9
Cześć, próbowałem tej metody (krok 4 opcja 1), ale otrzymałem błędnie zniekształcony nagłówek ze skryptu „php-cgi.exe”: Zły nagłówek: <br />, jakieś pomysły na czym może polegać problem?
Priyanshu
@Priyanshu Czy twoja instalacja PHP jest prawidłowa? Czy możesz uruchamiać pliki PHP z wiersza poleceń, php somefile.phpbez żadnych błędów?
Munim Munna
2
Odpowiedź nie zawiera już nawet kodu do dołączenia, SetEnv PHPRCwięc nie mogę go skomentować, ale nadal otrzymuję ten błąd. :(
Brett
1
Cześć. kiedy uruchamiam localhost: 8056, otrzymuję stronę nie znaleziono obiektu.
nas
1
ktoś potrafi pracować z wieloma wersjami php z xdebug? dostałemError message: End of script output before headers: php-cgi.exe
Noman
87

Możesz pobrać dowolne wersje PHP i umieścić je w ich własnych katalogach, np

c:\php5\

c:\php7\

Wszystko, co musisz zrobić, to powiedzieć serwerowi WWW (Apache), której wersji PHP ma używać, co robisz, ładując odpowiedni moduł. W Apache możesz to zrobić, znajdując plik, httpd.confa następnie edytując odpowiednią linię:

LoadModule php7_module c:\php7\libphp7.so

Oczywiście musisz znaleźć właściwe ścieżki - to tylko dla ilustracji.

Zapisz httpd.confi zrestartuj serwer. Uwaga, jeśli nie uruchomisz go ponownie, zmiany nie zaczną obowiązywać.

Nie ma przełącznika GUI, aby to zrobić, musisz edytować .confplik, a następnie ponownie uruchomić Apache. Wykonanie tego zajmuje tylko kilka sekund, a można nawet skomentować wersję, więc „przełączenie” zajmuje tylko kilka naciśnięć klawiszy, np.

Użyj PHP 5:

LoadModule php5_module c:\php5\libphp5.so
#LoadModule php7_module c:\php7\libphp7.so

Użyj PHP 7:

#LoadModule php5_module c:\php5\libphp5.so
LoadModule php7_module c:\php7\libphp7.so

Nie potrzebujesz wielu wersji XAMPP , podwójnego rozruchu, używania innej maszyny lub żadnego innego „rozwiązania”, które sugeruje zawiłe obejścia. OP chce używać XAMPP i powiedzieć mu, której wersji PHP ma użyć. Jest to najszybszy i najbardziej efektywny sposób na zrobienie tego i wymaga tylko jednej instalacji XAMPP.

Edycja 1 listopada 2017 r .: Najwyraźniej niektórzy mówią, że w .sosystemie Windows nie ma plików. Odpowiedź, której udzieliłem, została dostosowana na podstawie tego, jak skonfigurowałem rzeczy na moim Macu (który używa .soplików zamiast .dll). Zasada odpowiedzi jest jednak nadal dokładnie poprawna. Używasz pliku konfiguracyjnego Apache, httpd.confaby określić lokalizację modułu PHP ( .solub .dll) w systemie. Zatem jedyną różnicą w systemie Windows byłaby nazwa pliku i / lub lokalizacja ścieżki. Podana przeze mnie odpowiedź jest również poprawna dla zwykłej instalacji Apache / PHP (w ogóle bez XAMPP).

Andy
źródło
3
Ponownie wystawiłem czek. Nie mogę tego znaleźć. Czy możesz sprawdzić mój plik httpd.conf. To jest jego kopia. freetexthost.com/sjxz4lh1i5 Daj mi znać, jeśli znajdziesz ten wiersz, który powinienem zmienić.
Jestem najgłupszą osobą,
2
Nie ma żadnego libphp7.so w XAMPP i żadnego ciągu LoadModule w pliku konf
Federico Schiocchet
2
Nie mogłem też znaleźć tego wpisu. Przeszukałem również mój katalog php i nie mogłem znaleźć żadnych plików .so.
Eoin
19
W wersji 3.2.2 linia znajduje się w xampp / apache / conf / extra / httpd-xampp.conf
Manuel
5
To nie jest tylko jedna linia. Musisz wyedytować sporą część pliku httpd-xampp.conf. Dlatego za każdym razem lepiej jest zmieniać cały plik httpd-xampp.conf.
Jeffz,
34

Możesz pobrać i zainstalować dwa różne xamppy, tak jak ja: (pierwszy to php7, drugi to php5) wprowadź opis obrazu tutaj

a jeśli nie chcesz tego robić, sugeruję użycie wampa i zmianę wersji, jak pokazano tutaj .

Maulik Gangani
źródło
4
Dlaczego miałbyś to zrobić? Ponownie instalujesz wiele tego samego oprogramowania, tylko z niewielką różnicą (inna wersja PHP, podczas gdy reszta oprogramowania, taka jak Apache i MySQL, jest dokładnie taka sama). Opublikowałem rozwiązanie, w którym możesz po prostu użyć 1 instalacji XAMPP i skierować ją na odpowiednią wersję PHP.
Andy
15
Dlaczego miałbyś to zrobić? ponieważ to działa i nie mam nic przeciwko zainstalowaniu wielu apache i mysql, jeśli zaoszczędzi to trochę czasu.
Maulik Gangani
23
nie trzeba tu przejmować się najlepszymi praktykami, to lokalne środowisko
Ricardo Vigatti
2
Korzystam z tego podejścia, a ponadto zalecam dodanie określonych pozycji menu startowego dla każdej instalacji, takich jak: C: \ ProgramData \ Microsoft \ Windows \ Menu Start \ Programy \ XAMPP56 i C: \ ProgramData \ Microsoft \ Windows \ Menu Start Na przykład \ Programs \ XAMPP7
Ricardo Vigatti
2
Jeśli to nie jest dobre rozwiązanie, dlaczego nie zamieszczasz poprawnego rozwiązania? Właściwie jest bardzo trudno zainstalować 2 wersje na tym samym xampp i wszystkie rozwiązania tutaj są złe ...
Federico Schiocchet
12

Poleciłbym użycie Dockera, pozwala to podzielić środowisko na różne komponenty oraz mieszać i dopasowywać te, które chcesz w dowolnym momencie.

Docker pozwoli ci uruchomić jeden kontener z MySQL, inny z PHP. Ponieważ są to oddzielne obrazy, możesz mieć dwa kontenery, jeden PHP 5, drugi PHP 7, możesz uruchomić dowolny, który chcesz, a port 80 można zmapować do obu kontenerów.

https://hub.docker.com oferuje szeroką gamę wstępnie skonfigurowanych obrazów, które można zainstalować i uruchomić bez większych problemów.

Dodałem również portainer jako obraz, który pozwala zarządzać różnymi aspektami konfiguracji dockera - z poziomu obrazu dockera (uruchomiłem ten kontener podczas uruchamiania, aby zaoszczędzić mi konieczności korzystania z wiersza poleceń). Nie robi wszystkiego za Ciebie, a czasami łatwiej jest skonfigurować i uruchomić obrazy po raz pierwszy z wiersza poleceń, ale po skonfigurowaniu możesz je uruchamiać i zatrzymywać za pomocą interfejsu internetowego.

Możliwe jest również uruchomienie obu kontenerów w tym samym czasie i mapowanie oddzielnych portów do każdego z nich. Tak więc port 80 można zmapować na PHP 5 i 81 na PHP 81 (lub PHP 7, jeśli oglądasz to w 2017 roku).

Istnieją różne samouczki dotyczące instalowania Dockera ( https://docs.docker.com/engine/installation/ ) i mnóstwo innych rzeczy „jak” pisać. Wypróbuj http://www.masterzendframework.com/docker-development-environment/, aby uzyskać konfigurację środowiska programistycznego.

Nigel Ren
źródło
Popieram to. Wyświadcz swojej firmie przysługę i uruchom Docker. Przełączaj wersje PHP, szybciej wdrażaj nowych programistów, ułatwiaj wdrażanie i bez niespodzianek w środowisku produkcyjnym.
Kris Peeling
i 81 do PHP 81. masz na myśli PHP 7? Myślę, że jesteśmy już daleko poza PHP 81 :)
Andy
2
Errrr ... Naprawdę miałem na myśli 81 (Zapewniam, że moja odpowiedź jest przyszłościowa: - /)
Nigel Ren
1
@NigelRen Nie przegłosowałem tego, ale zgaduję, że to dlatego, że proponujesz użycie zupełnie innego rozwiązania (Docker), zamiast zajmować się tym, jak jest to możliwe w XAMPP - co z pewnością jest. Twoja odpowiedź jest (bardzo dobrym) alternatywnym rozwiązaniem problemu, ale nie jest odpowiedzią na zadane pytanie.
Andy
7

Używam Uniserver.

Ma wbudowaną tę funkcję.

http://www.uniformserver.com/

To takie proste.

Uniform Server to darmowe, lekkie rozwiązanie serwerowe WAMP dla systemu Windows. Mniej niż 24 MB, konstrukcja modułowa, zawiera najnowsze wersje Apache2, Perl5, PHP (przełączanie między PHP53, PHP54, PHP55 lub PHP56), MySQL5 lub MariaDB5, phpMyAdmin lub Adminer4. Nie jest wymagana instalacja! Brak pyłu rejestru! Po prostu rozpakuj i odpal!

Działa nawet z dysku flash. Posiada emulację crona, obsługę perla, mariaDB, kilka wersji Mysql, serwer filezilla i kilka innych rzeczy.

wprowadź opis obrazu tutaj

ArtystycznyPhoenix
źródło
Myślę, że to najlepsze rozwiązanie. Uratowałem życie.
skpaul
Otrzymuję alert o wirusie. Win32 / Uwamson.A! Ml
Norman Huth
6

Możesz mieć dwie różne wersje XAMPP.

  • Pobierz te pliki z https://www.apachefriends.org/download.html i zainstaluj w wybranym katalogu, na przykład w C: \ 5.6.31 \ xampp i C: \ 7.1.18 \ xampp.
  • Po każdej instalacji przejdź do zainstalowanego katalogu (np. C: \ 5.6.31 \ xampp, C: \ 7.1.18 \ xampp) i uruchom "setup_xampp.bat" i powinieneś zobaczyć coś takiego .
  • Możesz tworzyć skróty do „xampp-control.exe” na pulpicie (kliknij prawym przyciskiem myszy „xampp-control.exe” Wyślij do -> Pulpit) i zmieniać nazwy skrótów np. „xampp 5.6.31” i „xampp 7.1.8”.
  • Uruchom panel kontrolny XAMPP, klikając dwukrotnie plik „xampp-control.exe” lub wcześniej utworzony skrót i uruchom serwery Apache i MySQL.
  • Aby przetestować instalację, otwórz przeglądarkę i wpisz 127.0.0.1 lub localhost w pasku adresu. Powinieneś zobaczyć ekran startowy XAMPP.
  • Nie otwieraj więcej niż jednego panelu sterowania XAMPP.
  • Odinstalować XAMPP? Po prostu usuń katalog „xampp”. Ale zanim to zrobisz, zamknij apache i mysql.
  • To wszystko. Możesz użyć różnych wersji php, otwierając odpowiedni panel sterowania XAMPP.
og1842
źródło
Jeśli to naprawdę możliwe, zrób to za pomocą 1 instalacji, dlaczego nie opublikujesz rozwiązania? Właściwie jest bardzo trudno zainstalować 2 wersje i wszystkie rozwiązania tutaj są złe ...
Federico Schiocchet
@Andy Jeśli DB nie jest tak duży, podwójna instalacja jest realną opcją. Ale twoja odpowiedź zyskała moje uznanie.
Jeffz,
6

Pracuję nad dziesięcioletnim projektem w pracy. Więc 5.6 jest moim domyślnym. Istnieją również starsze małe projekty, które działają tylko z 5.2, a także chcę pracować nad nowymi wersjami dla moich osobistych projektów z 7.3.8

Oto, co zrobiłem, aby dodać 5.2 i 7.3.8 do domyślnej wersji 5.6.

1 - Pobrane wersje php TS;

2 - Wyodrębniono do folderu c: \ xampp \ php738 i c: \ xampp \ php52 w kolejności

3 - Dodano te linie na dole httpd-xampp.conf (lub httpd.conf);

*** WAŻNA UWAGA: NIE należy używać nazwy aliasu skryptu jako nazwy folderu docelowego, muszą one być różne. (na przykład / php7x jest w porządku, / php7 nie)

PHP 7.3.8 dla folderu D: \ www \ php7

ScriptAlias /php7x "C:/xampp/php738"
Action application/x-httpd-php7-cgi /php7x/php-cgi.exe
<Directory "C:/xampp/php738">
    AllowOverride None
    Options None
    Require all denied
    <Files "php-cgi.exe">
        Require all granted
    </Files>
</Directory>

<Directory "D:\www\php7">
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php7-cgi
    </FilesMatch>
</Directory>

PHP 5.2 dla folderu D: \ www \ php52

ScriptAlias /phpold "C:/xampp/php52"
Action application/x-httpd-phpold-cgi /phpold/php-cgi.exe
<Directory "C:/xampp/php52">
    AllowOverride None
    Options None
    Require all denied
    <Files "php-cgi.exe">
        Require all granted
    </Files>
</Directory>

<Directory "D:\www\php52">
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-phpold-cgi
    </FilesMatch>
</Directory>

Kilka pomocnych uwag:

  • Jeśli masz problemy z php5.x podczas korzystania z terminala przełącznika kompozytora do wersji 7.3.8
  • Jeśli chcesz ustawić php 7.3.8 jako domyślny interpreter php wiersza poleceń w systemie Windows, po prostu zmień ścieżkę środowiska Windows dla php na ścieżkę folderu 7.3.8.
  • Nie zapomnij edytować odpowiednich plików confs php.ini, tak jak potrzebujesz, w każdym folderze wersji.

I na koniec, jeśli chcesz ustawić wirtualnego hosta z dowolną wersją, możesz zastosować podobne podejście. Przykładowy plik laravel vhost conf dla php 7.3.8;

<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "D:\www\vhosts\laravel.local\public"
ServerName  laravel.local
<FilesMatch "\.php$">
 SetHandler application/x-httpd-php7-cgi # escape for default php version
#SetHandler application/x-httpd-phpold-cgi # unescape for php 5.2
</FilesMatch>

ErrorLog "logs/laravel.local.log"
CustomLog "logs/laravel.local.log" combined

Dzięki @Munim Munna za szczegółową odpowiedź, chciałem podzielić się solidną próbką z ważną informacją powyżej.

Erdinç Çorbacı
źródło
5

O ile nie musi to być absolutnie i zdecydowanie XAMPP, możesz spróbować uzyskać to, czego chcesz, dzięki WAMP. WAMP to prawie to samo w innym opakowaniu.

Po zainstalowaniu możesz po prostu przełączać się między wersjami php tutaj:

wprowadź opis obrazu tutaj

Możesz zainstalować tyle wersji PHP, ile potrzebujesz.

Oto szczegółowo, jak to się robi.

Po prostu przejdź tutaj: pobieranie WAMP

Następnie wybierz serwer podstawowy, np. Najnowszy z php7.

Następnie, po zainstalowaniu WAMP 3, przejdź do folderu: addons i wybierz wersję (lub wersje) php, której szukasz. Oferują wersje php zaczynające się od php 5.3.29, które powinny działać z mysql_connect.

Aby zainstalować dodatek, podczas instalacji (kliknij dwukrotnie plik exe) po prostu wskaż folder, w którym masz zainstalowany WAMP 3.

Następnie możesz użyć zawartości innych folderów, takich jak: aplikacje itp., Aby dodać więcej funkcji

Wszystko jest połączone, więc możesz skoncentrować się na kodowaniu, a nie hakowaniu środowiska.

Jeffz
źródło
4

Tak, możesz. Zakładam, że masz już zainstalowany xampp. Więc,

  • Zamknij wszystkie instancje xampp. Za pomocą menedżera zadań zatrzymaj apache i mysqld.
  • Następnie zmień nazwę xampp na xampp1 lub coś po nazwie xampp.
  • Teraz pobierz inną wersję xampp. Utwórz nazwę folderu tylko xampp. Zainstaluj tam pobrany plik xampp.
  • Teraz, w zależności od wersji xampp twojego wymagania, po prostu zmień nazwę folderu docelowego na tylko xampp, a inny folder na inną nazwę.

W ten sposób pracuję z wieloma zainstalowanymi xampp

Shuvro
źródło
4
Nie jestem pewien, dlaczego to się obniża, ponieważ ta odpowiedź działa i dokładnie o to chodzi w pytaniu. Ciche głosowanie w dół bez sugerowania ulepszeń nie jest ogólnie rzecz biorąc sprytną rzeczą.
Fabian Schöner
@ FabianSchöner Thanks. Nie wiem, dlaczego ta odpowiedź mnie zlekceważyła.
Shuvro
1
Powodem, dla którego został odrzucony, jest to, że ktoś już opublikował dokładnie tę odpowiedź. Po drugie, jest to całkowicie niepotrzebny sposób robienia rzeczy, ponieważ ponownie instalujesz WSZYSTKIE to samo oprogramowanie, aby uzyskać niewielką różnicę. Możliwe jest - jak stwierdzono w opublikowanej przeze mnie odpowiedzi - użycie 1 instalacji XAMPP, a następnie skonfigurowanie jej do korzystania z różnych wersji PHP.
Andy
3

Możliwe jest skonfigurowanie wielu wersji PHP za pomocą jednej instalacji XAMPP. Poniższe instrukcje działają w systemie Windows.

  1. Zainstaluj najnowszą wersję XAMPP dla Windows (w moim przypadku było to z PHP 7.1)
  2. Upewnij się, że Apache nie jest uruchomiony z Panelu sterowania XAMPP
  3. Zmień nazwę katalogu php w katalogu instalacyjnym XAMPP, na przykład C:\xampp\phpget C:\xampp\php-7.1.11.
  4. Pobierz wersję PHP, którą chcesz dodatkowo uruchomić (np .: PHP 5.4.45 )
  5. Przenieś katalog php z pobranej wersji do katalogu instalacyjnego XAMPP. Zmień nazwę, aby zawierała wersję PHP. Takich jak C:\xampp\php-5.4.45.

Teraz musisz edytować konfigurację XAMPP i Apache:

  1. W C:\xampp\apache\conf\httpd.conf, zlokalizuj ustawienia XAMPP dla PHP, powinieneś zmienić je na coś takiego:

Gdzie musisz komentować (z #) innymi wersjami PHP, aby tylko jedna Includebyła zinterpretowana w tym czasie.

#XAMPP settings PHP 7
Include "conf/extra/httpd-xampp.conf.7.1"

#XAMPP settings PHP 5.4.45
#Include "conf/extra/httpd-xampp.conf.5.4.45"
  1. Teraz w C:\xampp\apache\conf\extrakatalogu zmień nazwę httpd-xampp.confna httpd-xampp.conf.7.1i dodaj nowy plik konfiguracyjny dla httpd-xampp.conf.5.4.45. W moim przypadku skopiowałem plik conf innej instalacji XAMPP dla php 5.5, ponieważ składnia może się nieznacznie różnić dla każdej wersji.

  2. Edytuj httpd-xampp.conf.5.4.45i httpd-xampp.conf.7.1zamień tam wszystkie odwołania do phpkatalogu na nową php-X.Xwersję. Należy tu wprowadzić co najmniej 10 zmian dla każdego pliku.

  3. Teraz musisz edytować plik php.ini dla obu wersji. Na przykład dla PHP 7.1, edycja C:\xampp\php-7.1.11\php.ini, gdzie można zastąpić ścieżkę katalogu PHP include_path, browscap, error_log, extension_dir..

I to wszystko. Możesz teraz uruchomić Apache z Panelu sterowania XAMPP. Aby przełączyć się z jednej wersji na inną, wystarczy edytować C:\xampp\apache\conf\httpd.confi zmienić dołączoną wersję PHP przed ponownym uruchomieniem Apache.

maxime_039
źródło
3

uruchom to w oknach wiersza polecenia (cmd.exe).

set PATH=C:\xampp\php;%PATH%

zmień go w zależności od tego, gdzie umieścisz instalację php 7.

Adam Endvy
źródło
2

Nie musisz tracić czasu na te konfiguracje, po prostu użyj MAMP :)

MAMP ma funkcję wyboru wersji PHP w interfejsie.

Gokturk
źródło
2

To prawdopodobnie najmniej techniczna odpowiedź na to pytanie, ale jednocześnie najłatwiejsza do wykonania.

Jeśli masz dwa dyski, takie jak C: i D: możesz zainstalować oddzielne wystąpienie XAMPP na obu dyskach z różnymi wersjami php. Zajęło mi to mniej niż 10 minut i jest najmniej podatne na błędy.

Po prostu tworzę dwa skróty na pulpicie do obu xampp-control.exe i nazywam je według ich wersji php. Mam nadzieję, że pomoże to komuś takiemu jak ja, który woli bardzo szybkie i brudne rozwiązanie.

JacobRossDev
źródło
1

Wykonaj te proste kroki . Obecnie używam XAMPP na PHP 7.2, ale potrzebuję PHP 5.6 do pracy ze starymi projektami

KROK 1

Pobierz wersję PHP Thread Safe ze strony https://windows.php.net/download

Umieść pliki na swoim [Dysk]: \ xampp \ php5.6

  • Zmień nazwę folderu w zależności od wersji PHP

KROK 2

Skopiuj [Dysk]: \ xampp \ apache \ conf \ extra \ httpd-xampp.conf

Zmień nazwę na [Dysk]: \ xampp \ apache \ conf \ extra \ httpd-xampp5.6.conf Zmień nazwę pliku w zależności od wersji PHP

KROK 3

Edytuj nowo utworzony „httpd-xampp5.6.conf”

w zasadzie musisz zmienić wszystkie źródła PHP i .dll

Przed

LoadFile "C:/xampp/php/php7ts.dll"
LoadFile "C:/xampp/php/libpq.dll"
LoadModule php7_module "C:/xampp/php/php7apache2_4.dll"

Po

LoadFile "C:/xampp/php5.6/php5ts.dll"
LoadFile "C:/xampp/php5.6/libpq.dll"
LoadModule php5_module "C:/xampp/php5.6/php5apache2_4.dll"

Oto mój plik: https://gist.github.com/mpalencia/f8a20c31bffb02fe20d371218c23d1ec

KROK 4

Edytuj plik [Dysk]: \ xampp \ apache \ conf \ httpd.conf

Przed

# XAMPP settings
Include "conf/extra/httpd-xampp.conf"

Po

# XAMPP settings
Include "conf/extra/httpd-xampp5.6.conf"
  • Możesz po prostu edytować tę linię podczas przełączania na inną wersję

KROK 5

Edytuj konfigurację PHP 5.6 - php.ini

Dodaj katalog rozszerzeń: extension_dir = "C: \ xampp \ php5.6 \ ext"

KROK 6

Uruchom Apache

KROK 7

Edytuj ścieżkę zmiennej środowiskowej PHP w systemie Windows

mpalencia
źródło
0

Może trochę późno, ale używam partii do zmiany nazw folderów PHP (nieco zmodyfikowana wersja phpswitcha, którą znalazłem lata temu).

Kopiujesz różne foldery do instalacji XAMPP. Każdy folder PHP (poza aktywnym) otrzymuje numer wersji jako sufiks (np. Php_5.6.32 ). We WSZYSTKICH folderach PHP tworzony jest plik (PHP_VERSION), który zawiera tylko odpowiedni numer wersji, aby skrypt mógł pobrać te informacje. Ale to wszystko jest opisane w README.

Od PHP7 httpd-xampp.conf ładuje php7ts.dll zamiast php5ts.dll . Musiałem więc rozszerzyć skrypt (PHPSwitch.php), aby zmienić nazwy tych plików konfiguracyjnych, stosując to samo podejście.

    $renameCur = new PHPSwitch_Rename($currInst['path'], $this->_cfg['phpInstallationsPath'] . $this->_cfg['phpDirName'] . '_' . $currInst['version']);
    $renameNew = new PHPSwitch_Rename($newInst['path'], $this->_cfg['phpInstallationsPath'] . $this->_cfg['phpDirName']);

    $apache_curent      = $this->_cfg["phpInstallationsPath"]."apache/conf/extra/httpd-xampp.conf";
    $apache_curent_rename   = $this->_cfg["phpInstallationsPath"]."apache/conf/extra/httpd-xampp_".$currInst['version'].".conf";
    $apache_new             = $this->_cfg["phpInstallationsPath"]."apache/conf/extra/httpd-xampp_".$newInst['version'].".conf";
    $apache_new_rename      = $this->_cfg["phpInstallationsPath"]."apache/conf/extra/httpd-xampp.conf";

    $renameCur_apache_conf = new PHPSwitch_Rename($apache_curent, $apache_curent_rename);
    $renameNew_apache_conf = new PHPSwitch_Rename($apache_new, $apache_new_rename);

    $transaction = new PHPSwitch_Rename_Transaction();
    $transaction->add($renameCur);
    $transaction->add($renameNew);
    $transaction->add($renameCur_apache_conf);
    $transaction->add($renameNew_apache_conf);
Ebby
źródło
0

Musiałem zrobić to samo, więc wyszukałem w Google, jak i doszedłem do przepełnienia stosu, gdzie OP miał ten sam problem ... Więc moje ustalenia ... Próbowałem zmienić nazwy plików z różnych kierunków ORAZ mój wniosek był w zasadzie to mnie zabierało za długo. SOOOO Skończyło się na instalacji wersji 7 stąd:

https://www.apachefriends.org/index.html (wyłącz usługi i zamknij xampp przed próbą)

Na pytanie, gdzie umieścić katalog, nazwij go w ten sposób (nadaj mu inną nazwę):

wprowadź opis obrazu tutaj

i

DONEZO! Teraz po prostu pamiętaj, aby zabić usługi i wyjść przed zamianą w tę i z powrotem, a masz 2 sterylne środowiska XAMPP do gry.

Brawo! teraz mogę zabrać się do pracy!

hackdotslashdotkill
źródło
Myślę, że sugerują to już 2 odpowiedzi powyżej, Maulik Gangani i og1842.
Munim Munna
0

Użyj tego przełącznika php

Możesz kontrolować wersję php do dowolnego projektu, który chcesz za pomocą konfiguracji vhost.

krok
źródło
0

Wiem, że to stary post, ale chcę udostępnić, że jest tam biblioteka, w której nadal działa mysql_connect () w PHP 7. Działa poprzez nadpisanie rzeczywistej funkcji (mysql_connect () jest nadpisywana przez mysqli_connect (), która działa na tej bibliotece).

Znalazłem z tego filmu https://www.youtube.com/watch?v=Eqd-jJu4sQ4

miejmy nadzieję, że to pomoże

f_anto
źródło