Estamos executando o XAMPP com PHP 7.0 porque nossos novos produtos requerem PHP 7.
Mas existem projetos antigos que usam funções como mysql_connect
etc. Esses são removidos no PHP 7.0.
Então, existe uma maneira de alterar facilmente as versões do PHP no XAMPP?
Nota : Não sugira atualizar o projeto antigo para compatível com as novas versões, porque não estou em condições de fazê-lo por causa das decisões que não consigo como desenvolvedor (apenas um funcionário).
Respostas:
Execute uma versão PHP mais antiga apenas para o diretório do seu projeto antigo: isso servirá ao objetivo na maioria das vezes; você pode ter um ou dois projetos antigos que pretende executar com a versão PHP mais antiga. Basta configurar o xampp para executar a versão mais antiga do PHP apenas para esses diretórios do projeto.
Execute uma versão mais antiga do PHP em uma porta separada do xampp: Às vezes, você pode estar atualizando o projeto antigo para a versão mais recente do PHP quando precisar executar o mesmo projeto na nova e mais antiga versão do PHP. Em seguida, você pode definir uma versão mais antiga do PHP em uma porta diferente (por exemplo, 8056); portanto, quando você
http://localhost/any_project/
acessa o xampp, executa o PHP 7 e, quandohttp://localhost:8056/any_project/
acessa o xampp, executa o PHP 5.6.Execute uma versão mais antiga do PHP em um host virtual: Você pode criar um host virtual como o localhost56 para executar o PHP 5.6 enquanto pode usar o PHP 7 no localhost.
Etapa 1: Faça o download do PHP
Então você tem o PHP 7 rodando no xampp, você quer adicionar uma versão mais antiga do PHP, digamos PHP 5.6. Faça o download da versão nts (Non Thread Safe) do arquivo zip do PHP no php.net (consulte o arquivo para versões mais antigas) e extraia os arquivos em
c:\xampp\php56
. A versão segura do thread não inclui o php-cgi.exe.Etapa 2: configurar
php.ini
Abra o
c:\xampp\php56\php.ini
arquivo no bloco de notas. Se o arquivo não existir cópiaphp.ini-development
paraphp.ini
e abri-lo no bloco de notas. Descomente a seguinte linha:Etapa 3: configurar o apache
Abra o painel de controle do xampp, clique no botão de configuração do apache e clique em
Apache (httpd-xampp.conf)
. Um arquivo de texto será aberto, colocando as seguintes configurações na parte inferior do arquivo:Nota: Você pode adicionar mais versões do PHP à sua instalação do xampp, seguindo as etapas de 1 a 3, se desejar.
Etapa 4 (opção 1): [Adicione diretórios para executar uma versão específica do PHP]
Agora você pode definir diretórios que serão executados no PHP 5.6. Basta adicionar o seguinte na parte inferior do arquivo de configuração para definir diretórios.
Etapa 4 (opção 2): [Execute a versão mais antiga do PHP em uma porta separada]
Agora, para configurar o PHP v5.6 na porta 8056, adicione o seguinte código na parte inferior do arquivo de configuração.
Etapa 4 (opção 3): [Execute uma versão mais antiga do PHP em um host virtual]
Para criar um host virtual (localhost56) em um diretório (htdocs56) para usar o PHP v5.6 em http: // localhost56 , crie o diretório htdocs56 no local desejado e adicione localhost56 ao arquivo do host ( veja como ) e adicione o código a seguir na parte inferior do arquivo httpd-xampp.conf.
Concluir: Salvar e reiniciar o Apache
Salve e feche o arquivo de configuração. Reinicie o apache no painel de controle do xampp. Se você optou pela opção 2, pode ver a porta adicional (8056) listada no painel de controle do xampp.
Se você encontrar o erro acima, abra
httpd-xampp.conf
novamente e comente a seguinte linha com um # inicial (caractere de hash).fonte
php somefile.php
sem erros?SetEnv PHPRC
portanto não posso comentar, mas ainda estou recebendo esse erro. :(Error message: End of script output before headers: php-cgi.exe
Você pode baixar as versões do PHP que você precisa e colocá-las em seus próprios diretórios, por exemplo
c:\php5\
c:\php7\
Tudo o que você precisa fazer é informar ao servidor da web (Apache) qual versão do PHP usar, o que você faz carregando o módulo apropriado. No Apache, você pode fazer isso localizando o arquivo
httpd.conf
e editando a linha apropriada:LoadModule php7_module c:\php7\libphp7.so
Você terá que descobrir os caminhos corretos, é claro - isso é apenas para ilustração.
Salve
httpd.conf
e reinicie seu servidor. Observe que, se você não reiniciá-lo, as alterações não terão efeito.Não há opção de interface gráfica para fazer isso; você precisa editar o
.conf
arquivo e reiniciar o Apache. Fazer isso leva apenas alguns segundos e você pode até comentar uma versão para que "alternar" leve apenas algumas teclas, por exemploUse o PHP 5:
Use o PHP 7:
Você não precisa de várias versões do XAMPP , nem de inicialização dupla, nem de usar uma máquina diferente ou de qualquer outra "solução" que sugerisse soluções alternativas complicadas. O OP quer usar o XAMPP e informar qual versão do PHP usar. Essa é a maneira mais rápida e eficiente de fazer isso, e requer apenas uma instalação do XAMPP.
Edit 1-Nov-2017: Aparentemente, algumas pessoas estão dizendo que não há
.so
arquivos no Windows. A resposta que eu dei foi adaptada de como eu tenho as coisas configuradas no meu Mac (que usa.so
arquivos em vez de.dll
). O princípio da resposta, no entanto, ainda é exatamente correto. Você está usando o arquivo de configuração do Apachehttpd.conf
para especificar onde o módulo PHP (.so
ou.dll
) está localizado no seu sistema. Portanto, a única diferença para o Windows seria o nome do arquivo e / ou o local do caminho. A resposta que eu dei também está correta para uma instalação básica do Apache / PHP (sem o XAMPP).fonte
Você pode baixar e instalar dois xampps diferentes, como eu faço: (primeiro é php7, segundo é php5)
e se você não quiser fazer isso, sugiro que você use as versões wamp e change, como mostrado aqui .
fonte
Eu recomendaria usar o Docker, isso permite que você divida o ambiente em vários componentes, misture e combine os que você deseja a qualquer momento.
O Docker permitirá que você execute um contêiner com MySQL, outro com PHP. Como são imagens separadas, é possível ter dois contêineres, um PHP 5 e outro PHP 7, você inicia o que desejar e a porta 80 pode ser mapeada para os dois contêineres.
https://hub.docker.com possui uma ampla variedade de imagens pré-configuradas, que você pode instalar e executar sem muito trabalho.
Também adicionei o porttainer como uma imagem, que permite gerenciar os vários aspectos da sua configuração do docker - a partir de uma imagem do docker (iniciei esse contêiner na inicialização para evitar que eu usasse a linha de comando). Ele não faz tudo por você e, às vezes, é mais fácil configurar e iniciar as imagens pela primeira vez a partir da linha de comando, mas uma vez configurado, você pode iniciar e interrompê-las através de uma interface da web.
Também é possível executar os dois contêineres ao mesmo tempo e mapear portas separadas para cada um. Portanto, a porta 80 pode ser mapeada para o PHP 5 e 81 para o PHP 81 (ou PHP 7, se você estiver assistindo isso em 2017).
Existem vários tutoriais sobre como instalar o Docker ( https://docs.docker.com/engine/installation/ ) e vários outros tipos de 'como digitar'. Tente http://www.masterzendframework.com/docker-development-environment/ para obter uma configuração do ambiente de desenvolvimento.
fonte
Eu uso o Uniserver.
Ele possui esse recurso incorporado.
http://www.uniformserver.com/
É simples assim.
Ele ainda funciona com uma unidade flash. Possui emulação de cron, suporte para perl, mariaDB, algumas versões do Mysql, servidor filezilla e algumas outras coisas.
fonte
Você pode ter duas versões diferentes do XAMPP.
fonte
Estou trabalhando em um projeto de dez anos de trabalho. Então 5.6 é o meu padrão. Também existem pequenos projetos mais antigos que funcionam apenas com o 5.2 e também quero trabalhar em novas versões para meus projetos pessoais com o 7.3.8
Aqui está o que eu fiz para adicionar 5.2 e 7.3.8 na versão 5.6 padrão.
1 - Versões baixadas do php TS;
v7.3.8 (mais recente): https://windows.php.net/download/
v5.2: https://www.apachelounge.com/viewtopic.php?t=7349
2 - Extraído para a pasta c: \ xampp \ php738 ec: \ xampp \ php52 em ordem
3 - Adicionadas essas linhas na parte inferior do httpd-xampp.conf (ou httpd.conf);
*** AVISO IMPORTANTE: Você NÃO deve usar o nome alternativo do script como o nome da pasta de destino, pois eles devem ser diferentes. (por exemplo / php7x está ok, / php7 não está)
PHP 7.3.8 para a pasta D: \ www \ php7
PHP 5.2 para a pasta D: \ www \ php52
Algumas notas úteis:
E como última nota de bônus, se você precisar definir um host virtual com qualquer uma das versões, poderá usar uma abordagem semelhante. Uma amostra laravel vhost conf para php 7.3.8;
Graças a @Munim Munna pela resposta detalhada, eu queria compartilhar uma amostra sólida com o importante aviso acima.
fonte
A menos que tenha que ser absolutamente e definitivamente XAMPP, você pode tentar obter o que deseja com o WAMP. O WAMP é praticamente a mesma coisa em pacotes diferentes.
Depois de instalá-lo, você pode simplesmente alternar entre versões do php aqui:
Você pode instalar quantas versões de PHP precisar.
Veja como isso é feito em detalhes.
Basta ir aqui: download WAMP
Em seguida, selecione seu servidor base, por exemplo, o mais recente com o php7.
Então, quando o WAMP 3 estiver instalado, vá para a pasta: addons e selecione a versão (ou versões) do php que você procura. Eles oferecem sabores php a partir do php 5.3.29, que devem funcionar com o mysql_connect.
Para instalar o addon, durante a instalação (clique duas vezes no arquivo exe), aponte para a pasta onde o seu WAMP 3 está instalado.
Em seguida, você pode usar o conteúdo de outras pastas, como: aplicativos etc. para adicionar mais funcionalidades
Tudo está em interface, para que você possa se concentrar na codificação e não invadir o ambiente.
fonte
Sim você pode. Presumo que você já tenha um xampp instalado. Assim,
É assim que estou trabalhando com vários xampp instalados
fonte
É possível ter várias versões do PHP configuradas com uma única instalação do XAMPP. As instruções abaixo estão funcionando para Windows.
C:\xampp\php
tornar-seC:\xampp\php-7.1.11
.C:\xampp\php-5.4.45
.Agora você precisa editar a configuração do XAMPP e Apache:
C:\xampp\apache\conf\httpd.conf
, localize as configurações do XAMPP para PHP, altere-o para algo como:Onde você tem que comentar (com
#
) as outras versões do PHP para que apenas umaInclude
seja interpretada no momento.Agora
C:\xampp\apache\conf\extra
, renomeie o diretóriohttpd-xampp.conf
parahttpd-xampp.conf.7.1
e adicione um novo arquivo de configuração parahttpd-xampp.conf.5.4.45
. No meu caso, copiei o arquivo conf de outra instalação do XAMPP para php 5.5, pois a sintaxe pode ser um pouco diferente para cada versão.Edite
httpd-xampp.conf.5.4.45
ehttpd-xampp.conf.7.1
substitua lá toda a referência aophp
diretório pela novaphp-X.X
versão. Há pelo menos 10 alterações a serem feitas aqui para cada arquivo.Agora você precisa editar o php.ini para as duas versões. Por exemplo, para php 7.1, editar
C:\xampp\php-7.1.11\php.ini
, onde irá substituir o caminho do diretório php parainclude_path
,browscap
,error_log
,extension_dir
..E é isso. Agora você pode iniciar o Apache no painel de controle do XAMPP. E para alternar de uma versão para outra, você precisa apenas editar
C:\xampp\apache\conf\httpd.conf
e alterar a versão incluída do PHP antes de reiniciar o Apache.fonte
execute isso nas janelas do prompt de comando (cmd.exe).
altere-o dependendo de onde você instalou o php 7.
fonte
Você não precisa perder seu tempo com essas configurações, basta usar o MAMP :)
O MAMP possui um recurso de seleção de versão PHP na interface.
fonte
Essa é provavelmente a resposta menos técnica à pergunta, mas também é a mais fácil de realizar.
Se você tiver duas unidades, como C: e D :, poderá instalar uma instância separada do XAMPP em ambas as unidades com versões diferentes de php. Isso levou menos de 10 minutos para ser feito e é menos propenso a erros.
Acabei de criar dois atalhos da área de trabalho para o xampp-control.exe e nomeio os atalhos após a versão php. Espero que isso ajude alguém como eu que prefere uma solução muito rápida e suja.
fonte
Siga estas etapas fáceis . Atualmente, estou executando o XAMPP no PHP 7.2, mas precisa do PHP 5.6 para trabalhar em projetos antigos
PASSO 1
Faça o download da versão Thread Segura do PHP em https://windows.php.net/download
Coloque arquivos no seu [Drive]: \ xampp \ php5.6
PASSO 2
Copie [Unidade]: \ xampp \ apache \ conf \ extra \ httpd-xampp.conf
Renomeie-o para [Drive]: \ xampp \ apache \ conf \ extra \ httpd-xampp5.6.confNome do arquivo, dependendo da versão do Php
ETAPA 3
Edite o recém-criado 'httpd-xampp5.6.conf'
basicamente você precisa alterar toda a fonte PHP e .dll
Antes
Depois de
Aqui está o meu arquivo: https://gist.github.com/mpalencia/f8a20c31bffb02fe20d371218c23d1ec
PASSO 4
Edite o arquivo [Drive]: \ xampp \ apache \ conf \ httpd.conf
Antes
Depois de
PASSO 5
Edite sua configuração do PHP 5.6 - php.ini
Adicione o diretório de extensão: extension_dir = "C: \ xampp \ php5.6 \ ext"
PASSO 6
Inicie o Apache
PASSO 7
Editar caminho da variável de ambiente PHP no Windows
fonte
Talvez um pouco tarde, mas estou usando um lote para renomear as pastas PHP (uma versão ligeiramente modificada do phpswitch que encontrei anos atrás).
Você copia as diferentes pastas na instalação do XAMPP. Cada pasta PHP (exceto a ativa) recebe o número da versão como sufixo (por exemplo, php_5.6.32 ). Em TODAS as pastas PHP, é criado um arquivo (PHP_VERSION), que contém apenas o respectivo número da versão, para que o Script possa obter essas informações. Mas isso é tudo descrito no README.
Desde o PHP7, o httpd-xampp.conf carrega o php7ts.dll em vez do php5ts.dll . Então eu tive que estender o script (PHPSwitch.php) para renomear esses arquivos de configuração também, seguindo a mesma abordagem.
fonte
Eu precisava fazer a mesma coisa, então pesquisei como e cheguei ao estouro de pilha, onde o OP estava com o mesmo problema ... Então, minhas descobertas .. Tentei renomear arquivos de todas as direções diferentes E minha conclusão foi basicamente que está me levando demasiado longo. SOOOO acabei instalando a versão 7 daqui:
https://www.apachefriends.org/index.html (interrompa os serviços e saia do xampp antes de tentar)
Quando perguntado onde colocar o nome do diretório, é assim (dê um nome diferente):
e
DONEZO! Agora, certifique-se de matar os serviços e sair antes de trocar para frente e para trás e você tem 2 envs XAMPP estéreis para jogar.
Viva! agora eu posso realmente trabalhar!
fonte
Use este comutador php
Você pode controlar a versão php para qualquer projeto que desejar através da configuração do vhost.
fonte
Eu sei que este é o post antigo, mas quero compartilhar que existe uma biblioteca para ainda executar o mysql_connect () no PHP 7. Ele funciona substituindo a função real (mysql_connect () é substituído pelo mysqli_connect () que funciona nesta biblioteca).
Encontrei neste vídeo https://www.youtube.com/watch?v=Eqd-jJu4sQ4
espero que ajude
fonte