C'è modo di usare due versioni di PHP in XAMPP?


157

Stiamo eseguendo XAMPP con PHP 7.0 perché i nostri nuovi prodotti richiedono PHP 7.

Ma ci sono vecchi progetti che usano funzioni come mysql_connect, ecc. Questi vengono rimossi in PHP 7.0.

Quindi, c'è un modo per cambiare facilmente le versioni di PHP in XAMPP?

Nota : per favore, non suggerire di aggiornare il vecchio progetto in modo che sia compatibile con le nuove versioni perché non sono in grado di farlo a causa di quelle decisioni che non posso prendere come sviluppatore (solo un dipendente).


Non credo che ci sia una soluzione alternativa a ciò che si desidera fare oltre all'aggiornamento. Inoltre, non dovresti trovare modi per rendere compatibili le API obsolete e obsolete. Dovrebbero essere rimossi totalmente. Ovviamente è un sacco di lavoro, ma garantirebbe tranquillità
Rotimi,

1
Mi fermo e avvio Apache quando voglio cambiare versione di PHP in MAMP. È un dolore, ma funziona.
Scott C Wilson,

potresti

puoi creare un host virtuale quindi specificare la versione php per ognuno di essi
Aref Ben Lazrek,

2
@IlmariKaronen Voglio passare da uno all'altro sulla workstation di sviluppo. Voglio semplicemente usare PHP 5 quando sto facendo il Progetto A, voglio PHP 7 quando sto facendo il Progetto B. Anche la risposta più grande non funziona, non riesco a trovarla ... E molti utenti ..
I sono la persona più stupida il

Risposte:


133

Perché passare da una versione all'altra di PHP quando è possibile utilizzare più versioni di PHP contemporaneamente con una singola installazione di xampp ? Con una singola installazione di xampp, hai 2 opzioni:

  1. Esegui una versione precedente di PHP solo per la directory del tuo vecchio progetto: questo servirà allo scopo la maggior parte delle volte, potresti avere uno o due vecchi progetti che intendi eseguire con una versione precedente di PHP. Basta configurare xampp per eseguire la versione precedente di PHP solo per quelle directory di progetto.

  2. Esegui una versione di PHP precedente su una porta separata di xampp: a volte potresti aggiornare e vecchio progetto all'ultima versione di PHP quando devi eseguire lo stesso progetto su una versione di PHP nuova e precedente avanti e indietro. Quindi puoi impostare una versione precedente di PHP su una porta diversa (diciamo 8056), quindi quando vai su http://localhost/any_project/xampp esegue PHP 7 e quando vai su http://localhost:8056/any_project/xampp esegue PHP 5.6.

  3. Esegui una versione precedente di PHP su un virtualhost: puoi creare un virtualhost come localhost56 per eseguire PHP 5.6 mentre puoi usare PHP 7 su localhost.

Consente di configurarlo.

Passaggio 1: Scarica PHP

Quindi hai PHP 7 in esecuzione su xampp, vuoi aggiungere una versione precedente di PHP, diciamo PHP 5.6. Scarica la versione nts (Non Thread Safe) dell'archivio zip PHP da php.net (vedi archivio per le versioni precedenti) ed estrai i file in c:\xampp\php56. La versione thread-safe non include php-cgi.exe.

Passaggio 2: configuraphp.ini

Apri il c:\xampp\php56\php.inifile nel blocco note. Se il file non esiste copia php.ini-developmentper php.inie aprirlo in Blocco note. Quindi decommenta la seguente riga:

extension_dir = "ext"

Passaggio 3: configura apache

Apri il pannello di controllo di xampp, fai clic sul pulsante di configurazione per apache e fai clic Apache (httpd-xampp.conf). Si aprirà un file di testo che mette le seguenti impostazioni nella parte inferiore del file:

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>

Nota: se lo desideri, puoi aggiungere altre versioni di PHP all'installazione di xampp seguendo i passaggi da 1 a 3.

Passaggio 4 (opzione 1): [Aggiungi directory per eseguire una specifica versione di PHP]

Ora puoi impostare le directory che verranno eseguite in PHP 5.6. Basta aggiungere quanto segue in fondo al file di configurazione per impostare le directory.

<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>

Passaggio 4 (opzione 2): [Esegui la versione precedente di PHP su una porta separata]

Ora per impostare PHP v5.6 sulla porta 8056 aggiungi il seguente codice in fondo al file di configurazione.

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

Passaggio 4 (opzione 3): [Esegui una versione PHP precedente su un host virtuale]

Per creare un virtualhost (localhost56) in una directory (htdocs56) per utilizzare PHP v5.6 su http: // localhost56 , creare la directory htdocs56 nella posizione desiderata e aggiungere localhost56 nel file hosts ( vedere come ), quindi aggiungere il codice seguente nella parte inferiore del file 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>

Fine: salva e riavvia Apache

Salvare e chiudere il file di configurazione, riavviare apache dal pannello di controllo di xampp. Se hai optato per l'opzione 2 puoi vedere la porta aggiuntiva (8056) elencata nel tuo pannello di controllo xampp.

inserisci qui la descrizione dell'immagine

Aggiornamento per errore:
intestazione non corretta dallo script 'php-cgi.exe': intestazione errata

Se si verifica l'errore sopra riportato, aprire di httpd-xampp.confnuovo e commentare la riga seguente con un # iniziale (carattere hash).

SetEnv PHPRC "\\path\\to\\xampp\\php"

9
Ciao, stavo provando questo metodo (opzione 4 del passaggio 4), ma ho ricevuto un errore di intestazione non corretta dallo script 'php-cgi.exe': intestazione errata: <br />, hai qualche idea su quale potrebbe essere il problema?
Priyanshu,

@Priyanshu è OK l'installazione di PHP? Puoi eseguire i file PHP dalla riga di comando come php somefile.phpsenza errori?
Munim Munna,

2
La risposta non contiene più nemmeno il codice da includere, SetEnv PHPRCquindi non posso commentarlo, ma continuo a ricevere questo errore. :(
Brett

1
Ciao. quando eseguo localhost: 8056, ottengo la pagina dell'oggetto non trovato.
nas

1
qualcuno in grado di lavorare più versioni php con xdebug? ho ricevutoError message: End of script output before headers: php-cgi.exe
Noman il

87

Puoi scaricare qualsiasi versione di PHP di cui hai bisogno e inserirli nelle loro directory, ad es

c:\php5\

c:\php7\

Tutto quello che devi fare è dire al tuo server web (Apache) quale versione di PHP usare, cosa che fai caricando il modulo appropriato. In Apache puoi farlo trovando il file httpd.confe quindi modificando la riga appropriata:

LoadModule php7_module c:\php7\libphp7.so

Dovrai ovviamente capire i percorsi corretti - questo è solo a scopo illustrativo.

Salva httpd.confe riavvia il tuo server. Nota, se non lo riavvii, le modifiche non avranno effetto.

Non è necessario alcun interruttore GUI per poterlo fare, è necessario modificare il .conffile e riavviare Apache. Questa operazione richiede solo un paio di secondi e potresti persino commentare una versione, quindi "passare" richiede solo un paio di tasti, ad es.

Usa PHP 5:

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

Usa PHP 7:

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

Non sono necessarie più versioni di XAMPP , né eseguire il dual boot, né utilizzare una macchina diversa, né una delle altre "soluzioni" che hanno suggerito soluzioni alternative contorte. L'OP vuole usare XAMPP e dirgli quale versione di PHP usare. Questo è il modo più rapido ed efficiente per farlo e richiede solo un'installazione XAMPP.

Modifica 1-nov-2017: a quanto pare alcune persone dicono che non ci sono .sofile su Windows. La risposta che ho dato è stata adattata da come ho impostato le cose sul mio Mac (che utilizza i .sofile anziché .dll). Il principio della risposta tuttavia è ancora esattamente corretto. Stai usando il file di configurazione di Apache, httpd.confper specificare dove si trova il modulo PHP ( .soo .dll) sul tuo sistema. Quindi l'unica differenza per Windows sarebbe il nome del file e / o la posizione del percorso. La risposta che ho dato è corretta anche per un'installazione vanilla di Apache / PHP (senza XAMPP).


3
Ho ripetuto il controllo. Non ho potuto trovarlo. Potete per favore controllare il mio file httpd.conf. Questa è la sua copia. freetexthost.com/sjxz4lh1i5 Per favore fatemi sapere se trovate quella linea che dovrei cambiare.
Sono la persona più stupida, l'

2
Non c'è alcun libphp7.so in XAMPP e nessuna stringa LoadModule nel file conf
Federico Schiocchet,

2
Inoltre non sono riuscito a trovare questa voce. Ho anche cercato nella mia directory php e non sono riuscito a trovare alcun file .so.
Entro il

19
In v3.2.2 la linea si trova in xampp / apache / conf / extra / httpd-xampp.conf
Manuel

5
Non è solo una riga. Devi modificare una buona parte di httpd-xampp.conf. Quindi è meglio cambiare l'intero httpd-xampp.conf ogni volta che è necessario.
Jeffz,

34

Puoi scaricare e installare due diversi xampps come faccio io ((il primo è php7 il secondo è php5) inserisci qui la descrizione dell'immagine

e se non vuoi farlo, ti suggerisco di usare Wamp e cambiare le versioni come mostrato qui .


4
Perché dovresti farlo? Stai installando di nuovo molto lo stesso software, solo per una piccola differenza (versione diversa di PHP, quando il resto del software come Apache e MySQL è esattamente lo stesso). Ho pubblicato una soluzione in cui puoi semplicemente utilizzare 1 installazione di XAMPP e puntarla alla versione appropriata di PHP.
Andy,

15
Perché dovresti farlo? perché funziona e non mi dispiace avere più apache e mysql installati se fa risparmiare tempo.
Maulik Gangani,

23
non c'è bisogno di preoccuparsi delle migliori pratiche qui, è un ambiente locale
Ricardo Vigatti,

2
Uso questo approccio, in aggiunta, ti consiglio di aggiungere voci specifiche del menu Start per ogni installazione, come: C: \ ProgramData \ Microsoft \ Windows \ Menu Start \ Programmi \ XAMPP56 e C: \ ProgramData \ Microsoft \ Windows \ Start Menu \ Programmi \ XAMPP7 per esempio
Ricardo Vigatti,

2
Se questa non è una buona soluzione, perché non pubblichi una soluzione corretta? In realtà è molto difficile installare 2 versioni sullo stesso xampp e tutte le soluzioni qui sono sbagliate ...
Federico Schiocchet,

12

Consiglierei di utilizzare Docker, questo ti permette di dividere l'ambiente in vari componenti e mescolare e abbinare quelli che vuoi in qualsiasi momento.

Docker ti consentirà di eseguire un container con MySQL, un altro con PHP. Dato che sono immagini separate, puoi avere due container, uno PHP 5 e un altro PHP 7, avvii quello che desideri e la porta 80 può essere mappata su entrambi i container.

https://hub.docker.com ha una vasta gamma di immagini preconfigurate che è possibile installare ed eseguire senza troppi problemi.

Ho anche aggiunto portainer come immagine, che consente di gestire i vari aspetti della configurazione della finestra mobile - dall'immagine di una finestra mobile (ho avviato questo contenitore all'avvio per salvarmi dal dover usare la riga di comando). Non fa tutto per te e talvolta è più facile configurare e avviare le immagini per la prima volta dalla riga di comando, ma una volta impostato puoi avviarle e arrestarle tramite un'interfaccia web.

È anche possibile eseguire entrambi i contenitori contemporaneamente e mappare porte separate su ciascuno. Quindi la porta 80 può essere mappata su PHP 5 e 81 su PHP 81 (O PHP 7 se stai guardando questo nel 2017).

Esistono vari tutorial su come installare Docker ( https://docs.docker.com/engine/installation/ ) e un sacco di altre cose su "come fare". Prova http://www.masterzendframework.com/docker-development-environment/ per una configurazione dell'ambiente di sviluppo.


Io secondo questo. Fai un favore alla tua azienda e avvia Docker. Passa da una versione PHP all'altra a bordo di nuovi sviluppatori più velocemente, semplifica l'implementazione e non sorprende la produzione.
Kris Peeling,

e da 81 a PHP 81. intendi PHP 7? Penso che siamo ancora lontani da PHP 81 :)
Andy,

2
Errrr ... intendevo davvero 81 (sto assicurando che la mia risposta sia una prova futura: - /)
Nigel Ren

1
@NigelRen Non l'ho ancora votato, ma immagino che sia perché stai proponendo di utilizzare una soluzione completamente diversa (Docker) piuttosto che affrontare come sia possibile all'interno di XAMPP, cosa che sicuramente è. La tua risposta è una (molto buona) soluzione alternativa al problema, ma non una risposta alla domanda che è stata posta.
Andy,

7

Uso Uniserver.

Ha questa funzione integrata.

http://www.uniformserver.com/

È così semplice.

Uniform Server è una soluzione server WAMP leggera gratuita per Windows. Meno di 24 MB, design modulare, include le ultime versioni di Apache2, Perl5, PHP (passa da PHP53, PHP54, PHP55 o PHP56), MySQL5 o MariaDB5, phpMyAdmin o Adminer4. Nessuna installazione richiesta! Nessuna polvere di registro! Basta disimballare e accendere!

Funziona anche da un'unità flash. Ha emulazione cron, supporto per perl, mariaDB, un paio di versioni di Mysql, filezilla server e poche altre cose.

inserisci qui la descrizione dell'immagine


Questa è la migliore soluzione che penso. Mi sono salvato la vita.
skpaul

Ricevo un avviso di virus. Win32 / Uwamson.A! Ml
Norman Huth,

6

Puoi avere due diverse versioni di XAMPP.

  • Scarica quei file da https://www.apachefriends.org/download.html e installali in una directory a tua scelta, ad esempio in C: \ 5.6.31 \ xampp e C: \ 7.1.18 \ xampp.
  • Dopo ogni installazione vai alla directory installata (es. C: \ 5.6.31 \ xampp, C: \ 7.1.18 \ xampp) e avvia "setup_xampp.bat" e dovresti vedere qualcosa del genere .
  • Puoi creare scorciatoie di "xampp-control.exe" sul desktop (fai clic con il tasto destro su "xampp-control.exe" Invia a -> Desktop) e rinominare le scorciatoie per es. "xampp 5.6.31" e "xampp 7.1.8".
  • Avviare il pannello di controllo XAMPP con doppio clic su "xampp-control.exe" o collegamento precedentemente creato e avviare i server Apache e MySQL.
  • Per verificare l'installazione, apri il browser e digita 127.0.0.1 o localhost nella barra degli indirizzi. Dovresti vedere la schermata iniziale di XAMPP.
  • Non aprire più di un pannello di controllo XAMPP.
  • Disinstallare XAMPP? Rimuovi semplicemente la directory "xampp". Ma prima per favore chiudi l'apache e mysql.
  • È tutto. Puoi usare diverse versioni di php aprendo il pannello di controllo XAMPP corrispondente.

Se è davvero possibile farlo con 1 installazione, perché non pubblichi una soluzione? In realtà è molto difficile installare 2 versioni e tutte le soluzioni qui sono sbagliate ...
Federico Schiocchet,

@Andy Se il DB non è così grande, la doppia installazione è un'opzione praticabile. Ma la tua risposta ha ottenuto il mio voto.
Jeffz,

6

Sto lavorando a un progetto di dieci anni al lavoro. Quindi 5.6 è il mio default. Ci sono anche piccoli progetti più vecchi che funzionano solo con 5.2 e voglio anche lavorare su nuove versioni per i miei progetti personali con 7.3.8

Ecco cosa ho fatto per aggiungere 5.2 e 7.3.8 sulla versione 5.6 predefinita.

1 - Versioni php TS scaricate;

2 - Estratto nella cartella c: \ xampp \ php738 ec: \ xampp \ php52 in ordine

3 - Aggiunte queste righe in fondo a httpd-xampp.conf (o httpd.conf);

*** AVVISO IMPORTANTE: NON utilizzare il nome dell'alias di script come nome della cartella di destinazione, devono essere diversi. (ad esempio / php7x è ok, / php7 no)

PHP 7.3.8 per la cartella 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 per la cartella 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>

Alcune note utili:

  • In caso di problemi con php5.x durante l'utilizzo del terminale dell'interruttore del compositore su 7.3.8
  • Se si desidera impostare php 7.3.8 come interprete php della riga di comando predefinita su Windows, è sufficiente modificare il percorso dell'ambiente windows per php nel percorso della cartella 7.3.8.
  • Non dimenticare di modificare le conf php.ini pertinenti di cui hai bisogno in ogni cartella di versione.

E come ultima nota bonus, se devi impostare un host virtuale con una qualsiasi delle versioni puoi usare un approccio simile. Un esempio di vhost laravel conf per php 7.3.8;

<VirtualHost *:80>
ServerAdmin admin@laravel.local
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

Grazie a @Munim Munna per la risposta dettagliata, ho voluto condividere un campione solido con l'importante avviso di cui sopra.


5

A meno che non sia assolutamente e sicuramente XAMPP, puoi provare a ottenere quello che vuoi con WAMP. WAMP è praticamente la stessa cosa in diversi pacchetti.

Una volta installato, puoi semplicemente passare tra le versioni di php qui:

inserisci qui la descrizione dell'immagine

Puoi installare tutte le versioni di PHP di cui hai bisogno.

Ecco come viene fatto in dettaglio.

Basta andare qui: download di WAMP

Quindi selezionare il server di base, ad es. Ultimo con php7.

Quindi, quando WAMP 3 è installato, vai alla cartella: addon e seleziona la versione (o le versioni) di php che stai cercando. Offrono sapori php a partire da php 5.3.29, che dovrebbero funzionare con mysql_connect.

Per installare il componente aggiuntivo, durante l'installazione (doppio clic sul file exe) basta puntare alla cartella in cui è installato WAMP 3.

Quindi è possibile utilizzare il contenuto di altre cartelle, come: applicazioni, ecc. Per aggiungere più funzionalità

Tutto è interfacciato, quindi puoi concentrarti sulla codifica e non sull'hacking del tuo ambiente.


4

Si, puoi. Presumo che tu abbia già installato un xampp. Così,

  • Chiudi tutte le istanze di xampp. Utilizzando Task Manager fermare apache e mysqld.
  • Quindi rinominare xampp in xampp1 o qualcosa dopo il nome xampp.
  • Ora scarica l'altra versione di xampp. Crea un nome cartella solo xampp. Installa lo xampp scaricato lì.
  • Ora, a seconda della versione di xampp del requisito, basta rinominare la cartella di destinazione in solo xampp e un'altra cartella con un nome diverso.

Ecco come sto lavorando con più xampp installati


4
Non sono sicuro del motivo per cui questo diventa downvotet poiché questa risposta funziona ed è esattamente ciò che la domanda sta ponendo. Il downvoting silenzioso senza suggerire miglioramenti non è affatto una cosa intelligente in generale.
Fabian Schöner,

@ FabianSchöner Grazie. Non so perché stavo venendo retrocesso di questa risposta.
Shuvro,

1
Il motivo per cui è stato sottoposto a downgrade è perché qualcuno ha già pubblicato esattamente questa risposta. E in secondo luogo, è un modo totalmente inutile di fare le cose poiché stai installando di nuovo TUTTO lo stesso software solo per avere una piccola differenza. È possibile - come indicato nella risposta che ho pubblicato - utilizzare 1 installazione di XAMPP e quindi configurarlo per utilizzare diverse versioni di PHP.
Andy,

3

È possibile avere più versioni di PHP configurate con un'unica installazione XAMPP. Le istruzioni seguenti funzionano per Windows.

  1. Installa l'ultima versione di XAMPP per Windows (nel mio caso era con PHP 7.1)
  2. Assicurarsi che Apache non sia in esecuzione dal pannello di controllo di XAMPP
  3. Rinominare la directory php nella directory di installazione di XAMPP, come C:\xampp\phpdiventa C:\xampp\php-7.1.11.
  4. Scarica inoltre la versione di PHP che desideri eseguire (ad esempio: PHP 5.4.45 )
  5. Sposta la directory php dalla versione che hai scaricato nella directory di installazione di XAMPP. Rinominalo in modo che includa la versione di PHP. Come C:\xampp\php-5.4.45.

Ora devi modificare la configurazione di XAMPP e Apache:

  1. Nel C:\xampp\apache\conf\httpd.conf , trova le impostazioni XAMPP per PHP, dovresti cambiarlo in qualcosa come:

Dove devi commentare (con #) le altre versioni di PHP in modo Includeda interpretarne solo una alla volta.

#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. Ora, in C:\xampp\apache\conf\extradirectory di rinomina httpd-xampp.confper httpd-xampp.conf.7.1e aggiungere un nuovo file di configurazione per httpd-xampp.conf.5.4.45. Nel mio caso, ho copiato il file conf di un'altra installazione di XAMPP per php 5.5 poiché la sintassi potrebbe essere leggermente diversa per ogni versione.

  2. Modifica httpd-xampp.conf.5.4.45e httpd-xampp.conf.7.1sostituisci tutti i riferimenti alla phpdirectory con la nuova php-X.Xversione. Ci sono almeno 10 modifiche da apportare qui per ciascun file.

  3. Ora devi modificare php.ini per le due versioni. Per esempio per PHP 7.1, modificare C:\xampp\php-7.1.11\php.inidove si sostituire il percorso della directory php per include_path, browscap, error_log, extension_dir..

E questo è tutto. Ora puoi avviare Apache dal pannello di controllo di XAMPP. E per passare da una versione all'altra, devi solo modificare C:\xampp\apache\conf\httpd.confe cambiare la versione di PHP inclusa prima di riavviare Apache.


3

eseguirlo in Windows prompt dei comandi (cmd.exe).

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

cambiarlo a seconda di dove hai inserito l'installazione di php 7.


2

Non è necessario perdere tempo con queste configurazioni, basta usare MAMP :)

MAMP ha una funzione di selezione della versione di PHP sull'interfaccia.


2

Questa è probabilmente la risposta meno tecnica alla domanda, ma è anche la più facile da realizzare.

Se hai due unità come C: e D: puoi installare un'istanza separata di XAMPP su entrambe le unità con diverse versioni di php. Mi ci sono voluti meno di 10 minuti per fare ed è meno soggetto a errori.

Ho appena creato due scorciatoie desktop per entrambi xampp-control.exe e ho nominato le scorciatoie dopo la loro versione php. Spero che questo aiuti qualcuno come me che preferisce una soluzione molto veloce e sporca.


1

Segui questi semplici passaggi . Attualmente sto eseguendo XAMPP su PHP 7.2 ma ho bisogno di PHP 5.6 per lavorare su vecchi progetti

PASSO 1

Scarica la versione Thread Safe di PHP su https://windows.php.net/download

Inserisci i file sul tuo [Drive]: \ xampp \ php5.6

  • Rinomina la cartella in base alla versione di Php

PASSO 2

Copia [Drive]: \ xampp \ apache \ conf \ extra \ httpd-xampp.conf

Rinominalo in [Drive]: \ xampp \ apache \ conf \ extra \ httpd-xampp5.6.conf Rinomina il file in base alla versione di Php

PASSAGGIO 3

Modifica il "httpd-xampp5.6.conf" appena creato

in pratica devi cambiare tutta la fonte PHP e .dll

Prima

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

Dopo

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

Ecco il mio file: https://gist.github.com/mpalencia/f8a20c31bffb02fe20d371218c23d1ec

PASSAGGIO 4

Modifica il file [Drive]: \ xampp \ apache \ conf \ httpd.conf

Prima

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

Dopo

# XAMPP settings
Include "conf/extra/httpd-xampp5.6.conf"
  • Puoi semplicemente modificare questa riga quando passi alla versione diversa

PASSAGGIO 5

Modifica la tua configurazione di PHP 5.6 - php.ini

Aggiungi la tua directory di estensione: extension_dir = "C: \ xampp \ php5.6 \ ext"

PASSAGGIO 6

Avvia Apache

PASSAGGIO 7

Modifica il percorso della variabile di ambiente PHP su Windows


0

Forse un po 'in ritardo, ma sto usando un batch per rinominare le cartelle PHP (una versione leggermente modificata del phpswitch che ho trovato anni fa).

Copi le diverse cartelle nell'installazione di XAMPP. Ogni cartella PHP (tranne quella attiva) riceve il numero di versione come suffisso (ad es. Php_5.6.32 ). In TUTTI cartelle PHP, viene creato un file (PHP_VERSION), che contiene solo il rispettivo numero di versione, in modo che lo script possa acquisire queste informazioni. Ma questo è tutto descritto nel README.

A partire da PHP7, httpd-xampp.conf carica php7ts.dll anziché php5ts.dll . Quindi ho dovuto estendere lo script (PHPSwitch.php) per rinominare anche questi file di configurazione seguendo lo stesso approccio.

    $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);

0

Avevo bisogno di fare la stessa cosa, quindi ho cercato su Google come e sono arrivato allo stack overflow, dove l'OP stava avendo lo stesso problema ... Quindi i miei risultati .. Ho provato a rinominare i file da tutte le direzioni diverse E la mia conclusione è stata sostanzialmente mi sta prendendo troppo lungo. SOOOO Ho finito per installare la versione 7 da qui:

https://www.apachefriends.org/index.html (uccidi i servizi ed esci da xampp prima di tentare)

Quando ti viene chiesto dove inserire il nome della directory in questo modo (assegnagli un nome diverso):

inserisci qui la descrizione dell'immagine

e

DONEZO! Ora assicurati di uccidere i servizi e di uscire prima di scambiare avanti e indietro e hai 2 sterili XAMPP in cui giocare.

Evviva! ora posso davvero mettermi al lavoro!


Penso che sia già suggerito da 2 risposte sopra, Maulik Gangani e og1842.
Munim Munna,

0

Usa questo switcher php

Puoi controllare la versione php per qualsiasi tuo progetto tu voglia tramite la configurazione di vhost.


0

So che questo è il vecchio post, ma voglio condividere che esiste una libreria per l'esecuzione di mysql_connect () in PHP 7. Funziona sostituendo la funzione reale (mysql_connect () viene sostituita da mysqli_connect () che funziona su questa libreria).

Ho trovato da questo video https://www.youtube.com/watch?v=Eqd-jJu4sQ4

si spera che aiuti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.