# Aplicativos em PHP/Instalação e configurações do ambiente/Via Xampp
## O que é o Xampp?

O Xampp é um utilitário que instala o Apache, PHP (PEAR e PECL), MySQL, Perl, phpMyAdmin, proFtpd e outros. Atualmente se encontra na versão XAMPP 1.6.2 para o windows e já vem configurado com:
* MySQL 5.0.41
* PHP 5.2.2
* PHP 4.4.7
* phpMyAdmin 2.10.1
* e muito mais

## Sistemas Operacionais Suportados

Tem versões para Linux, Windows e outros SOs.

## Utilitários

Traz ainda em sua index (http://127.0.0.1) um menu com a relação dos seus utilitários e alguns exemplos em php e perl. Este menu é facilmente incrementado ao se editar os arquivos .inc em:
C:\Arquivos de programas\xampp\HTDOCS\xampp.

## Instalação

Faça o download do site oficial de acordo com o seu sistema (http://xampp.sf.net) ou se preferir em português do Brasil: http://www.apachefriends.org/pt_br/xampp.html

## No Windows

Execute o instalador
Diretório web default = C:\Arquivos de programas\xampp\HTDOCS
php.ini - C:\Arquivos de programas\xampp\apache\bin
httpd.conf - C:\Arquivos de programas\xampp\apache\conf

## No Linux

Descompacte em /opt com
tar zxpvf xampp.*.tar.gz -C /opt
Diretório web - /opt/lampp/htdocs
php.ini e httpd.conf - /opt/lampp/etc
ATENÇÃO: Não esqueça de, após instalar o xampp, mudar as senhas default do apache, mysql e do próprio xampp. Ignorando este aviso, o xampp ficaria perigosamente exposto à invasões ou afins. (para mais informações de como proceder para mudar as senhas, vide a seção abaixo - Tornando o xampp mais seguro)

## Usando o Xampp

No windows o executável abre um menu onde podemos executar os serviços separadamente. Após executar um ícone fica na barra de tarefas, o que facilita o gerenciamento.
No Linux – execute o arquivo "/opt/lampp/lampp serviço ação", onde:
serviço – um dos serviços disponíveis (httpd, mysql, etc)
ação – start, stop, status
/opt/lampp/lampp start (inicia todos os serviços disponíveis)
Configurando o Servidor de FTP (proFtpd)
editar /opt/lampp/etc/proftpd.conf e alterar usuário, senha e diretório a gosto
O diretório default é o /opt/lampp/htdocs
Sugestão: criar dentro do htdocs um sub com nome ftp.
A senha do proftpd não pode ser trocada manualmente, pois é criptografada.
Para trocar devemos usar o security:
/opt/lampp/lampp security
Dica: Se você não quiser ter que digitar o caminho completo (/opt/lampp/lampp start) sempre que quiser lançar o servidor xampp, você pode criar um link para o executável no "path" do seu sistema com um simples:
$ sudo ln -s /opt/lampp/lampp /usr/local/bin/lampp
Com isso, um
$ sudo lampp start
bastará para lançar o servidor.

## Testando PHP

Tanto no windows quanto no linux, startar o apache e abrir o browser apontando para http://localhost ou http://127.0.0.1
Se tudo correu bem verá a index do Xampp com todos os seus recursos,onde poderá inclusive optar pelo idioma Português do Brasil.

## Instalar PostgreSQL e integrar com PHP

Download do site oficial (http://www.postgresql.org), escolhendo pelo sistema operacional.
Instalação
Windows – execute o instalador
Linux – Para distribuições com instalação de binários fica mais fácil
Instalar dos fontes. Apenas descompacte e leia o arquivo INSTALL, onde encontrará passos resumidos para a instalação.
Configuração
Para configurar que máquinas terão acesso ao postgresql edite o arquivo pg_hba.conf, que fica no subdiretório data do postgresql.
Configure acesso via TCP/IP no arquivo postgresql.conf que fica no mesmo diretório do pg_hba.conf (em algumas distribuições fica no /etc/postgresql).
Integrando com PHP
No Windows descomente a linha com “extension=php_pgsql.dll” no php.ini e restarte o apache. No Linux o suporte já vem habilitado por default.

## Tornando o Xampp mais Seguro
### Usando o Security do Xampp

No Linux - Abra a interface web (127.0.0.1)
- Clique no link Segurança à esquerda e leia as instruções
- Para ativar a segurança execute como super usuário:
/opt/lampp/lampp security
E ative tudo que desejar.
Após isso, para acessar o phpMyAdmin de forma mais confortável, edite o arquivo:
/opt/lampp/lib/xampp.users e alterar o nome do user default de "lamp" para o seu.
Então ao acessar entre com seu usuário e senha (a que cadastrou ao adicionar a segurança no Xampp para acessar o sistema de arquivos) e logo em seguida entre com root e senha (do banco).
No Windows
Ao abrir o Xampp no Windows e clicar no link Segurança ele não abre reclamando de um arquivo.
Então copie o seguinte arquivo:
c:\arquivos de programas\xampp\htdocs\xampp\lang\pt_br.php
Copie para:
c:\arquivos de programas\xampp\security\htdocs\lang
Pronto. Agora o link funciona.

### Adicionando senha ao MySQL e phpMyAdmin

Caso pretendamos apenas adicionar senha ao MySQL e deixar o Xampp e PHP como estão...
O MYSQL inicia sem senha para o usuário "root". No PHP você pode conectar ao MYSQL através do comando: mysql_connect("localhost","root",""); Se você quiser atribuir uma senha para o usuário "root" no MYSQL, por favor, use o comando "mysqladmin" no console. Por exemplo:
\...\xampp\mysql\bin\mysqladmin -u root password secret
Atenção: Depois de alterar a senha do usuário "root", não esqueça de configurar o PHPMyAdmin. Procure o arquivo "config.inc.php" em \...\xampp\phpmyadmin\ e edite as seguintes linhas:
$cfg['Servers'][$i]['user'] = 'root'; // MySQL SuperUser $cfg['Servers'][$i]['auth_type'] = 'http'; // HTTP MySQL authentification
Agora a senha correta para o usuário "root" é requisitada, antes do PHPMyAdmin iniciar.
Obs.: Apenas copiei e colei da ótima FAQ do Xampp em pt-br (http://www.apachefriends.org/pt_br/xampp-windows.html).

## Mudando o DocumentRoot

Em algumas vezes é mais cômodo ou então mais seguro alterar o diretório default do DocumentRoot do Apache. Neste caso, para o Linux proceder da seguinte forma:
Mude o caminho para /home/ribafs:
- Acesse o terminal
- sudo gedit /opt/lampp/etc/httpd.conf
- Tecle Ctrl+F para localizar "htdocs"
- Troque as duas ocorrências com htdocs para "/home/ribafs/htdocs"
- Crie a pasta: md /home/ribafs/htdocs
- Então no terminal novamente execute:
sudo cp -Ra /opt/lampp/htdocs /home/ribafs/htdocs
- Mude as permissões para o usuário "ribafs" assim:
sudo chown -R ribafs:ribafs /home/ribafs/htdocs
sudo chmod -R 705 /home/ribafs/htdocs
Então
cd /home/ribafs/htdocs/xampp
chmod 777 lang.tmp

## Adicionando Domínio Virtual no Apache com Xampp

Mesmo estando usando o PHP localmente podemos ter um outro domínio ou subdomínio. Quando instalamos o PHP via Xampp localmente, nós temos o IP 127.0.0.1 ou o nome localhost, de forma que abrimos no navegador com http://127.0.0.1 ou http://localhost. Podemos também ter localmente um site que abre em outro endereço como, por exemplo, http://ribafs.localhost. Como realizar isso?
Os passos seguintes são um resumo do turotial:
Preparando o terreno para o desenvolvimento em php com o Xampp no Ubuntu
- Edite o seu /etc/hosts e adicione a linha:
-- 127.0.0.1 ribafs.localhost
- Edite o /opt/lampp/etc/httpd.conf e descomente a linha:
-- Include etc/extra/httpd-vhosts.conf
- Edite o /opt/lampp/etc/extra/httpd-vhosts.conf e insira o trecho de código:
Lembre de preservar o trecho do localhost:
Então reinicie o Apache.
Agora você tem um domínio virtual chamado ribafs.localhost, que inclusive atende via ping ribafs.localhost e pode ser chamado pelo navegador:
http://ribafs.localhost
No diretório indicado em DocumentRoot /home/ribafs/htdocs/ribafssite podemos adicionar o conteúdo de outro site.

## Configurações Iniciais

- Executar o xampp-control.exe
- Clicar no botão Svc à esquerda (para ativar como serviço)
- Clicar em Sim para Install Service
- Clicar em Sim para Autostart Service e Start Service
- À esquerda do botão Stop clicar no botão Admin
- Em termos de segurança é recomendado alterar a porta default
- Adicione uma senha para Administração
- Marque "Always connect to this server"
- Abre então o painel de administração do FileZilla
Vamos criar um grupo e um usuário com acesso a um determinado diretório:
Criar um Grupo
- Clique no ícone com as duas carinhas (group dialog)
- Com a Page General selecionada, em Groups clique em Add e entre com o nome do nosso grupo (restrito)
- Selecione agora a Page Shared Folder a abaixo clique em Add e selecione o diretório (d:\xampp\htdocs) que este grupo terá acesso
(Por precaução faça agora um backup de todo o conteúdo deste diretório)
- Observe que temos opções para controlar as permissões dos arquivos e diretórios em Files e Directories (Devemos dar as devidas permissões)
- Ao final clique no botão "Set as home dir" para que este diretório seja o diretório default quando o usuário se conectar
- Clique em OK
Criar um Usuário
- Clique no ícone com uma carinha (Accounts dialog)
- Com a Page General selecionada à direita clique em Add em Users
- Entre com o login do usuário e abaixo selecione o grupo "restrito" que criamos
- Clique no botão Password e entre com uma senha para o usuário
- Podemos controlar a quantidade de conexões deste usuário e também as conexões por IP
- Selecione a Page Shared Folder e selecione o diretório que este usuário terá acesso
- De forma semelhante selecione as devidas permissões e clique em "Set as home dir" para tornar o diretório default deste usuário
- Ao final clique em OK
- Após estar tudo configurado é recomendado desativar todos os usuários não usados, inclusive o anônimo
Cliente de FTP
Para acesso com um cliente, existe o próprio FileZilla:
http://downloads.sourceforge.net/filezilla/FileZilla_3.0.3_win32-setup.exe

## Apache 2 comentado

httpd.conf todo comentado e com muitas boas dicas. Vale a pena conferir, quer tenha instalado com Xampp ou manualmente.
http://www.vivaolinux.com.br/conf/verConf.php?codigo=426

### Suporte ao conjunto de caracteres da ISO-8859-1 direto no Apache (httpd.conf)

Gostaria de destacar o suporte ao nosso idioma como default nas linhas:
Basta adicionar estas linhas ao final do httpd.conf e reiniciar o apache. Ressalte-se que abaixo tem bem mais que apenas o suporte ao nosso conjunto de caracteres.

## Suporte ao conjunto de caracteres da ISO-8859-1 direto nos scripts

Caso não tenha acesso ao servidor ou queira dar suporte apenas a determinados scripts, utilize uma das linhas abaixo, dependendo da sua linguagem):
Dica encontrada em: http://forum.imasters.com.br/index.php?showtopic=173603
PHP - <?php header("Content-Type: text/html; charset=ISO-8859-1",true) ?>
ASP - <% Response.Charset="ISO-8859-1" %>
JSP - <%@ page contentType="text/html; charset=ISO-8859-1" %>
HTML/XML - <?xml version="1.0" encoding="UTF-8"?>