Servidor PHP na máquina local?

161

Estou tentando criar um site PHP e estou querendo testar meus arquivos PHP sem carregá-los no meu host. Basicamente testando-os em minha própria máquina antes de enviá-los. Como faço isso?

Kozy
fonte
1
use o XAMPP e instale o servidor PHP. às vezes, se o skype usar as portas 80 e 443, o servidor apache não será iniciado. A solução completa é fornecida aqui feelzdroid.com/2015/12/install-php-server-local-machine.html
Naruto

Respostas:

379

O PHP 5.4 e posterior têm um servidor da web embutido atualmente.

Você simplesmente executa o comando no terminal:

cd path/to/your/app
php -S 127.0.0.1:8000

Em seguida, no seu navegador, vá para o http://127.0.0.1:8000boom e seu sistema deverá estar em funcionamento. (Deve haver um arquivo index.php ou index.html para que isso funcione.)

Você também pode adicionar um roteador simples

<?php
// router.php
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
    return false;    // serve the requested resource as-is.
} else { 
    require_once('resolver.php');
}
?>

E então execute o comando

php -S 127.0.0.1:8000 router.php

Referências:

JardimRouteGold
fonte
9
Caso alguém esteja se perguntando, o -S e uma referência a outros comandos podem ser encontrados no link abaixo. Em particular, -S significa "Executar com o servidor da web incorporado". php.net/manual/en/features.commandline.options.php
calipoop,
mas e os bancos de dados em que eles deveriam ter lugar para serem armazenados!
Yousef Altaf
1
@YousefAltaf o OP não especifica o clima ou eles não queriam que um banco de dados fosse usado. Eles pediram um servidor PHP e este simplesmente é um servidor PHP. Se você deseja executar um servidor MYSQL ou PostGres Server, isso seria outra pergunta e você pode configurar seu aplicativo PHP para usar o servidor. Também para fins de desenvolvimento rápido, um banco de dados SQLITE deve fazer.
GardenRouteGold 2/17/17
1
PHP Built-in servidor web não suporta pedido paralelo: The web server runs a only one single-threaded process, so PHP applications will stall if a request is blocked.. Isso pode causar algum problema de desempenho.
vikyd
1
@ Vikyd isso não significa para o desenvolvimento completo de aplicativos, é apenas uma maneira rápida de testar / depurar recursos ou codificar IMHO.
GardenRouteGold
39

Esta é uma maneira simples e segura de executar seu servidor php localmente:

php -S 0.0.0.0:<PORT_NUMBER>

Onde PORT_NUMBER é um número inteiro de 1024 a 49151

Exemplo: php -S 0.0.0.0:8000

Notas:

  1. Se você usar, em localhostvez de 0.0.0.0você pode encontrar um erro de conexão recusada.

  2. Se quiser tornar o servidor da Web acessível a qualquer interface, use 0.0.0.0.

  3. Se uma solicitação de URI não especificar um arquivo, index.php ou index.html no diretório especificado serão retornados.

Dado o seguinte arquivo (router.php)

<?php
// router.php
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
    return false;    // serve the requested resource as-is.
} else { 
    echo "<p>Welcome to PHP</p>";
}
?>

Rode isto ...

php -S 0.0.0.0:8000 router.php

... e navegue no seu navegador para http: // localhost: 8000 / e o seguinte será exibido:

Welcome to PHP

Referência:

Servidor da Web incorporado

l3x
fonte
4
Obrigado pela dica sobre 0.0.0.0, o que é uma solução mágica que era - deve ser incorporada a resposta aceita ou algo assim ...
calipoop
14

Costumo usar o seguinte comando para girar minha estrutura PHP Laravel:

$ php artisan serve --port=8080
or
$ php -S localhost:8080 -t public/

No comando acima: - Artisan é uma interface de linha de comando incluída no Laravel, que usa o serve para chamar o servidor php embutido

Para executar com o servidor da web incorporado.

 php -S <addr>:<port> -T

Aqui,
-S: mude para Executar com o servidor da web incorporado.
-T: Alterne para especificar a raiz do documento para o servidor da web incorporado.

Amitesh Bharti
fonte
8

Eu uso o WAMP . Um assistente de instalação fácil, vários módulos para o Apache e PHP pré-configurados e fáceis de ligar e desligar para corresponder à sua configuração remota.

Chris Sobolewski
fonte
7

Se você deseja uma pilha de desenvolvimento local para todos os fins para qualquer sistema operacional em que possa escolher entre diferentes versões de PHP, MySQL e servidor da Web e também não tiver medo de usar o Docker, pode optar pelo devilbox .

O devilbox é uma pilha PHP dockerizada moderna e altamente personalizável, que suporta LAMP e MEAN completos e é executada em todas as principais plataformas. O objetivo principal é alternar e combinar facilmente qualquer versão necessária para o desenvolvimento local. Ele suporta um número ilimitado de projetos para os quais vhosts e registros DNS são criados automaticamente. As ferramentas de desenvolvimento abrangente e popular de e-mail também estarão ao seu serviço. A configuração não é necessária, pois tudo é pré-configurado com hospedagem virtual em massa.

Colocá-lo em funcionamento é bem simples:

# Get the devilbox
$ git clone https://github.com/cytopia/devilbox
$ cd devilbox

# Create docker-compose environment file
$ cp env-example .env

# Edit your configuration
$ vim .env

# Start all containers
$ docker-compose up

devilbox

Ligações:

citopéia
fonte
5

Instale o XAMPP . Se você estiver executando MS Windows, WAMP também é uma opção.

fora
fonte
4

MAMP se você estiver em um MAC MAMP

Joey Blake
fonte
1

Use o Apache Friends XAMPP . Ele configurará o servidor HTTP Apache, PHP 5 e MySQL 5 (até onde eu sei, provavelmente há mais do que isso). Você não precisa saber como configurar o apache (ou qualquer um dos módulos) para usá-lo.

Você terá um diretório htdocs que o Apache servirá (acessível por http: // localhost / ) e deve poder colocar seus arquivos PHP lá. Com a minha instalação, está em C: \ xampp \ htdocs.

Carson Myers
fonte
1

Se você possui uma máquina local com o software certo: servidor da web com suporte para PHP, não há motivo para não fazer o que descreve.

No momento, estou fazendo isso com o XAMPP em uma máquina Windows XP e (em casa) com o Kubuntu e uma pilha LAMP.

pavium
fonte
1

O AppServ é um pequeno programa no Windows para executar:

  • Apache
  • PHP
  • MySQL
  • phpMyAdmin

Também fornecerá um botão de inicialização e parada para o Apache. O que acho muito útil.

M. Sundstrom
fonte