Manual do PHP

por:
Mehdi Achour
Friedhelm Betz
Antony Dovgal
Nuno Lopes
Hannes Magnusson
Georg Richter
Damien Seguy
Jakub Vrana
2008-11-21
Editado por: Philip Olson
por:
Fernando Correa da Conceição
Marcelo Pereira Fonseca da Silva
Raphael Melo de Oliveira Bastos Sales
Renato Arruda
Ricardo Miranda Santos
André Luis Ferreira da Silva Bacci
Anderson Fortaleza
João Prado Maia
Claudio Pereira
Lucas Rocha
Alessander Pery Lopes Thomaz
Taniel Franklin
Thomas Gonzalez Miranda
Ernani Joppert Pontes Martins
Rafael Jaques
Felipe Nascimento Silva Pena
Diogo Galvão
Thiago Henrique Pojda

Copyright

Copyright © 1997 - 2008 para o PHP Documentation Group. Este material pode ser distribuído apenas sob os termos e condições determinadas pela Creative Commons Attribution 3.0 ou posteriores. Uma cópia da Creative Commons Attribution 3.0 license é distribuída com esse manual. A úlima versão está atualmente disponível em » http://creativecommons.org/licenses/by/3.0/.

Se você está interessado na redistribuição ou republicação deste documento no todo ou em parte, tanto modificao ou não, ou se você tem qualquer questão, basta contatar os responsáveis pelo copyright em » doc-license@lists.php.net. Note que esse endereço tem suas mensagens preservadas em um arquivo público.



Manual do PHP


Prefácio

PHP, que significa "PHP: Hypertext Preprocessor", é uma linguagem de programação de ampla utilização, interpretada, que é especialmente interessante para desenvolvimento para a Web e pode ser mesclada dentro do código HTML. A sintaxe da linguagem lembra C, Java e Perl, e é fácil de aprender. O objetivo principal da linguagem é permitir a desenvolvedores escreverem páginas que serão geradas dinamicamente rapidamente, mas você pode fazer muito mais do que isso com PHP.

Esse manual consiste primeiramente de uma referência de funções, mas ele também contém uma referência da linguagem, explicações sobre as mais importantes características do PHP, e outras informações suplementares.

Você pode fazer o download deste manual em vários formatos em » http://www.php.net/download-docs.php. Mais informações sobre como esse manual é desenvolvido podem ser encontradas no apêndice 'Sobre o manual'. Se você está interessado na história do PHP, veja o apêndice relevante.

Autores e colaboradores

Nós enfatizamos as pessoas mais ativas na capa do manual, mas há muitos mais colaboradores que atualmente nos ajudam no trabalho ou proveram uma enorme quantidade de ajuda no passado. Há uma enormidade de pessoas não citadas que ajudam com suas notas nas páginas do manual, que são continuamente inclúidas no corpo do manual, trabalho esse que nós somos muito gratos. A lista a seguir está em ordem alfabética.

Autores e Editores

Os seguintes colaboradores devem ser reconhecidos pelo impacto que tiveram e/ou continuam a ter pelo acréscimo de material ao manual: Bill Abt, Jouni Ahto, Alexander Aulbach, Daniel Beckham, Stig Bakken, Jesus M. Castagnetto, Ron Chmara, Sean Coates, John Coggeshall, Simone Cortesi, Markus Fischer, Wez Furlong, Sara Golemon, Rui Hirokawa, Brad House, Pierre-Alain Joye, Etienne Kneuss, Moriyoshi Koizumi, Rasmus Lerdorf, Andrew Lindeman, Stanislav Malyshev, Rafael Martinez, Rick McGuire, Yasuo Ohgaki, Derick Rethans, Rob Richards, Sander Roobol, Egon Schmid, Thomas Schoefbeck, Sascha Schumann, Dan Scott, Masahiro Takagi, Michael Wallner, Lars Torben Wilson, Jim Winstead, Jeroen van Wolffelaar e Andrei Zmievski.

Os seguintes colaboradores já fizeram um significativo trabalho editando esse manual: Stig Bakken, Gabor Hojtsy, Hartmut Holzgraefe e Egon Schmid.

Mantenedores das notas de usuários

Mantenedores mais ativos: Friedhelm Betz, Etienne Kneuss, Nuno Lopes, Hannes Magnusson, Felipe Pena e Maciek Sokolewicz.

Estas pessoas já fizeram um grande esforço cuidando das notas de usuários Mehdi Achour, Daniel Beckham, Friedhelm Betz, Victor Boivie, Jesus M. Castagnetto, Nicolas Chaillan, Ron Chmara, Sean Coates, James Cox, Vincent Gevers, Sara Golemon, Zak Greant, Szabolcs Heilig, Oliver Hinckel, Hartmut Holzgraefe, Rasmus Lerdorf, Matthew Li, Andrew Lindeman, Aidan Lister, Maxim Maletsky, Bobby Matthis, James Moore, Philip Olson, Sebastian Picklum, Derick Rethans, Sander Roobol, Damien Seguy, Jason Sheets, Tom Sommer, Jani Taskinen, Yasuo Ohgaki, Jakub Vrana, Lars Torben Wilson, Jim Winstead, Jared Wyles e Jeroen van Wolffelaar.




Começando


Introdução

Índice

O que é PHP?

PHP (um acrônimo recursivo para "PHP: Hypertext Preprocessor") é uma linguagem de script open source de uso geral, muito utilizada e especialmente guarnecida para o desenvolvimento de aplicações Web embútivel dentro do HTML.

Ótimo, mas o que isso significa?

Exemplo #1 Um exemplo introdutório

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>Exemplo</title>
    </head>
    <body>

        <?php
        
echo "Olá, Eu sou um script PHP!";
        
?>

    </body>
</html>

Ao invés de muitos comandos para mostrar HTML (como visto em C ou Perl), páginas PHP contém HTML juntamente com códigos que fazem "alguma coisa" (neste caso, mostra "Olá, Eu sou um script PHP!") O código PHP é delimitado por tags iniciais e finais <?php e ?> que lhe permitem pular pra dentro e pra fora do "modo PHP".

O que distingui o PHP de algo como Javascript no lado do cliente é que o código é executado no servidor, gerando HTML que é então enviado para o cliente. O cliente receberia os resultados da execução desse script, mas não saberia como é o código fonte. Você pode inclusive configurar seu servidor para processar todos os seus arquivos HTML como PHP, e então não haverá nenhum modo dos usuários descobrirem que se você usa essa linguagem ou não.

A melhor coisa em usar PHP está no fato de ele ser extremamente simples para um iniciante, mas oferece muitos recursos para o programador profissional. Não se preocupe em ler as longas listas de funções do PHP. Você pode pular essa parte (por enquanto) e começar a escrever scripts em poucas horas.

Apesar do desenvolvimento do PHP ser focado nos scripts do lado do servidor, você pode fazer muito mais com ele. Veja isso e leia mais na seção O que o PHP pode fazer?, ou diretamente no tutorial introdutório se você estiver interessado em programação web.


O que o PHP pode fazer?

Qualquer coisa. O PHP é focado para ser uma linguagem de script do lado do servidor, portanto, você pode fazer qualquer coisa que outro programa CGI pode fazer, como: coletar dados de formulários, gerar páginas com conteúdo dinâmico ou enviar e receber cookies. Mas o PHP pode fazer muito mais.

Esses são os maiores campos onde os scripts PHP podem ser utilizados:

  • Script no lado do servidor (server-side). Este é o mais tradicional e principal campo de atuação do PHP. Você precisa de três coisas para seu trabalho. O interpretador do PHP (como CGI ou módulo), um servidor web e um browser. Basta rodar o servidor web conectado a um PHP instalado. Você pode acessar os resultados de seu programa PHP com um browser, visualizando a página PHP através do servidor web. Todos eles podem rodar na sua máquina, em casa, para você experimentar programação com o PHP. Veja a seção das instruções de instalação para mais informações.
  • Script de linha de comando. Você pode fazer um script PHP funcionar sem um servidor web ou browser. A única coisa necessária é o interpretador. Esse tipo de uso é ideal para script executados usando o cron ou o Agendador de Tarefas (no Windows). Esses scripts podem ser usados também para rotinas de processamento de texto. Veja a seção Utilizando o PHP em linha de comando para maiores informações.
  • Escrevendo aplicações desktop. O PHP provavelmente não é a melhor linguagem para criação de aplicações desktop com interfaces gráficas, mas se você conhece bem o PHP, e gostaria de usar alguns dos seus recursos avançados nas suas aplicações do lado do cliente, você pode usar o PHP-GTK para escrever programas assim. Isso ainda lhe habilita a escrever aplicações multi-plataformas. O PHP-GTK é uma extensão do PHP, não disponibilizada na distribuição oficial. Caso esteja interessado no PHP-GTK, visite » o site do projeto.

O PHP pode ser utilizado na maioria dos sistemas operacionais, incluindo Linux, várias variantes Unix (incluindo HP-UX, Solaris e OpenBSD), Microsoft Windows, Mac OS X, RISC OS, e provavelmente outros. O PHP também é suportado pela maioria dos servidores web atuais, incluindo Apache, Microsoft Internet Information Server, Personal Web Server, Netscape and iPlanet Servers, Oreilly Website Pro Server, Caudium, Xitami, OmniHTTPd, e muitos outros. O PHP pode ser configurado como módulo para a maioria dos servidores, e para os outros como um CGI comum.

Com o PHP, portanto, você tem a liberdade para escolher o sistema operacional e o servidor web. Do mesmo modo, você pode escolher entre utilizar programação estrutural ou programação orientada a objeto, ou ainda uma mistura deles. Mesmo sem todos os recursos da POO (Programação Orientada a Objetos) implementados no PHP 4, muitas bibliotecas de código e grandes aplicações (incluindo a biblioteca PEAR) são escritas somente em código POO. O PHP 5 corrige as fraquezas da POO do PHP 4, e introduz um modelo de objetos completo.

Com PHP você não está limitado a gerar somente HTML. As habilidades do PHP incluem geração de imagens, arquivos PDF e animações Flash (utilizando libswf ou Ming) criados dinamicamente, on the fly. Você pode facilmente criar qualquer padrão texto, como XHTML e outros arquivos XML. O PHP pode gerar esses padrões e os salvar no sistema de arquivos, em vez de imprimi-los, formando um cache dinâmico de suas informações no lado do servidor.

Talvez a mais forte e mais significativa característica do PHP é seu suporte a uma ampla variedade de banco de dados. Escrever uma página que consulte um banco de dados é incrivelmente simples. Os seguintes bancos de dados são atualmente suportados:

  • Adabas D
  • dBase
  • Empress
  • FilePro (read-only)
  • Hyperwave
  • IBM DB2
  • Informix
  • Ingres
  • InterBase
  • FrontBase
  • mSQL
  • Direct MS-SQL
  • MySQL
  • ODBC
  • Oracle (OCI7 and OCI8)
  • Ovrimos
  • PostgreSQL
  • SQLite
  • Solid
  • Sybase
  • Velocis
  • Unix dbm
Também foi providenciado uma abstração de banco de dados (chamada PDO) permitindo a você utilizar qualquer banco de dados transparentemente com sua extensão. Adicionalmente, o PHP suporta ODBC (Open Database Connection, ou Padrão Aberto de Conexão com Bancos de Dados), permitindo que você utilize qualquer outro banco de dados que suporte esse padrão mundial.

O PHP também tem suporte para comunicação com outros serviços utilizando protocolos como LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (em Windows) e incontáveis outros. Você pode abrir sockets de rede e interagir diretamente com qualquer protocolo. O PHP também suporta o intercâmbio de dados complexos WDDX, utilizado em virtualmente todas as linguagens de programação para web. Falando de comunicação, o PHP implementa a instanciação de objetos Java e os utiliza transparentemente como objetos PHP. Você ainda pode usar sua extensão CORBA para acessar objetos remotos.

O PHP é extremamente útil em recursos de processamento de texto, do POSIX Estendido ou expressões regulares Perl até como interpretador para documentos XML. No processamento de XML, o PHP 4 suporta os padrões SAX e DOM, além de você também poder utilizar a extensão XSL para transformar documentos XML. O PHP 5 padroniza toda a extensão XML a partir da base sólida da libxml2, além de estender os recursos com o acréscimo ao SimpleXML e XMLReader.

Por último mas longe de terminar, temos também outras extensões interessantes: funções para o search engine mnoGoSearch, funções para Gateway IRC, vários utilitários de compressão (gzip, bz2, zip), calendário e conversões de datas, tradução...

Como você pode ver, esta página não é suficiente para descrever todos os recursos e benefícios que o PHP pode oferecer. Leia nas seções sobre a Instalação do PHP, e veja a referência das funções para detalhes das extensões mencionadas aqui.




Um simples tutorial

Índice

Aqui nós iremos mostrar o básico do básico do PHP em um curto tutorial. Este texto fala somente sobre a criação de páginas dinâmicas com o PHP, visto que o PHP pode criar mais do que somente webpages. Veja a seção entitulada O que o PHP pode fazer para mais informações.

Fazer páginas com PHP é o mesmo que criar páginas HTML e você pode criá-las e editá-las da mesma maneira que faz com suas páginas HTML normal.

O que eu preciso?

Neste tutorial nós presumimos que seu servidor tem suporte ao PHP ativado e que todos os arquivos terminam com a extensão .php são tratados pelo PHP. Na maioria dos servidores esta é a extensão padrão para os arquivos PHP, mas pergunte ao seu administrador só para ter certeza. Se o seu servidor suporta PHP então você não precisa fazer mais nada. Apenas crie seus arquivos .php e coloque-os no seu diretório web e o servidor irá com um passe de mágica mostrar suas páginas PHP. Não há nenhuma necessidade de compilação para qualquer ferramenta extra. Pense nesses arquivos PHP como se eles fossem páginas HTML com algumas tags à mais que deixaram você fazer coisas mais interessantes do que somente páginas HTML estáticas.

Digamos que você quer salvar sua preciosa conexão e desenvolver tudo localmente. Neste caso, você precisará instalar um servidor web, como o » Apache, e claro o » PHP. Você também irá querer instalar uma base de dados, como por exemplo o » MySQL. Você pode instalá-los separadamente ou pelo jeito mais simples que é » usar os pacotes pré-configurados. que irão instalar automaticamente todas as coisas com apenas alguns cliques. É super fácil configurar um servidor web com suporte ao PHP em qualquer sistema operacional, incluindo Linux e Windows. No Linux, você deve procurar o » rpmfind que é muito útil na localização de pacotes RPM.


Sua primeira página PHP

Crie um novo arquivo chamado ola.php e coloque-o em seu diretório root do seu servidor web (DOCUMENT_ROOT) com o seguinte conteúdo:

Exemplo #1 Nosso primeiro script PHP: ola.php

<html>
 <head>
  <title>PHP Teste</title>
 </head>
 <body>
 <?php echo "<p>Olá Mundo</p>"?>
 </body>
</html>

Use o seu navegador para acessar o arquivo pelo endereço de seu servidor web, ao final do endereço coloque o arquivo "/ola.php" como referência. Quando o desenvolvimento é local você usará uma url como esta http://localhost/ola.php ou http://127.0.0.1/ola.php mas dependendo da configuração do seu servidor web. Entretanto isto está fora do escopo deste tutorial, veja também as diretivas DocumentRoot e ServerName dos arquivos de configuração do seu servidor web. (no Apache o nome do arquivo é httpd.conf). Se tudo foi configurado corretamente, o arquivo irá ser interpretado pelo PHP e irá mostrar a seguinte mensagem de saída no seu navegador:

<html>
 <head>
  <title>PHP Teste</title>
 </head>
 <body>
 <p>Olá Mundo</p>
 </body>
</html>

Note que isto não é como em um script CGI. O arquivo não precisa ser executável ou especial em nenhum aspecto. Pense nesse arquivo como um arquivo HTML normal mas com a diferença que ele pode conter algumas tags especiais à mais que permitem à você fazer coisas mais interessantes do que somente páginas HTML estáticas.

Este exemplo é extremamente simples e você realmente não precisa usar o PHP para criar uma página como esta. Tudo o que ele faz é mostrar uma mensagem Olá Mundo usando a declaração echo() do PHP.

Se você tentar rodar este exemplo e ele não mostrar nenhuma mensagem de saída, ou aparecer uma caixa de diálogo pedindo para você salvar o arquivo, ou você ver o arquivo em formato de texto, há uma grande chance do seu servidor não ter o PHP habilitado. Peça ao seu administrar para habilitar o PHP para você usando o capítulo de Instalação do manual. Se você está desenvolvendo localmente, também leia o capítulo indicado acima para ter certeza de que configurou tudo corretamente. Se os problemas continuarem à persistir, não hesite em usar uma das várias formas de » ajuda que o PHP pode lhe oferecer.

O objetivo do exemplo é mostrar o formato especial das tags do PHP. Neste exemplo nós usamos <?php para indicar que à partir daquele ponto começa um código PHP. Então nós colocamos uma declaração de fechamento para indicar que o script PHP acabou, usando a tag ?>. Você pode usar o PHP em qualquer parte do seu código HTML, e também pode usar várias tags de abertura e fechamento no mesmo arquivo. Para mais detalhes, leia a seção do manual que fala da sintaxe básica do PHP.

Nota: Uma Nota sobre os Editores de Texto
Há muitos editores de textos e Integrated Development Enviroments (IDEs) que você pode usar para criar, editar e gerenciar arquivos PHP. Uma lista parcial destas ferramentas pode ser vista na » Lista de Editores para PHP. Se você gostaria de recomendar algum editor, por favor visite o endereço acima e pergunte à gerenciador do site para adicionar o seu editor à lista. Ter um editor que colore as sintaxes das tags pode ser muito útil.

Nota: Uma Nota sobre os Processadores Word
Processadores Word como o StarOffice Write, Microsoft Word e Abiword não são boas escolhas para editar arquivos PHP. Se você deseja usar um desses para testar seus scripts, você precisa verificar se você está salvando os arquivos como TEXTO PLANO ou o PHP não irá ser capaz de ler e executar o seu script.

Nota: Uma Nota sobre o Bloco de Notas do Windows
Se você está escrevendo seus scripts PHP usando o Bloco de Notas do Windows, você precisará verificar que os arquivos estão sendo salvos com a extensão .php. (O Bloco de Notas do Windows adiciona automaticamente a extensão .txt aos arquivos à não ser que você siga um dos passos a seguir para previnir isto). Quando a caixa de diálogo Salvar estiver aberta e você for digitar o nome do seu arquivo, coloque o nome do arquivo entre aspas (i.e. "ola.php"). Uma alternativa, é você clicar na lista drop-down 'Documentos de Texto' na caixa de diálogo salvar e alterar para "Todos os tipos de arquivos". Você agora pode digitar o nome do seu arquivo sem usar as aspas.

Agora que você criou com sucesso um script simples em PHP, é hora de criar o mais famoso dos scripts PHP! Uma chamada à função phpinfo() e você verá todas as informações sobre seu sistema e configurações disponíveis como a de Variáveis Pré-definidas, módulos carregados pelo PHP, e as opções de configuração. Tire algum tempo para ver e rever estas importantes informações.



Algo Útil

Vamos fazer alguma coisa um pouco mais útil agora. Nós iremos checar qual é o tipo de navegador que o visitante está utilizando para ver a nossa página. De fato, para fazer isto nós teremos que checar qual é o valor da string agente que o navegador envia como parte de sua requisição HTTP. Esta informação é armazenada em uma variável. Variáveis sempre começam com um símbolo de cifrão no PHP. A variável que nos interessa no momento é a $_SERVER["HTTP_USER_AGENT"].

Nota: Nota sobre as Auto-Globais do PHP
$_SERVER é uma variável especial reservada do PHP que contém todas as informações sobre o servidor web. Ela é conhecida como uma Auto-Global (ou Superglobal). Veja a página do manual relacionada as Auto-globais para mais informações. Estas variáveis especiais foram introduzidas no PHP » 4.1.0. Antes desta versão, nós usávamos os velhos arrays $HTTP_*_VARS, como o $HTTP_SERVER_VARS. Entretanto, este estilo antingo foi removido, porém ainda existem. (Veja a nota sobre códigos antigos.)

Para chamar esta variável, nós podemos fazer isto:

Exemplo #1 Imprimindo a variável (Elemento Array)

<?php echo $_SERVER["HTTP_USER_AGENT"]; ?>

Um exemplo de saída deste script poderia ser:

Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
     

Há muitos tipos de variáveis disponíveis no PHP. No exemplo acima nós escrevemos um elemento Array. Arrays podem ser muito úteis.

$_SERVER é somente uma variável que é automaticamente disponibilizada para você pelo PHP. Uma lista de Variáveis Reservadas pode ser vista na seção Variáveis Reservadas do manual ou você pode pegar uma lista completa delas criando um arquivo como este:

Exemplo #2 Exibindo todas as variáveis pré-definidas usando a função phpinfo()

<?php phpinfo(); ?>

Se você carregar este arquivo no seu navegador você irá ver uma página com todas as informações sobre o PHP junto com uma lista de todos os tipos de variáveis disponíveis para você.

Você pode colocar mútiplas declarações PHP dentro da tag PHP e criar pequenos blocos de códigos que faem muito mais do que um simples echo. Por exemplo, se você quer checar se o navegador é o Internet Explorer faça algo como isso:

Exemplo #3 Exemplo usando controles de declarações e funções

<?php
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
    echo 
"Você está usando o Internet Explorer<br />";
}
?>

Um exemplo de Saída seria:

Você está usando o Internet Explorer<br />

Aqui nós mostraremos alguns novos conceitos. Nós temos a declaração if. SE você é familiar com a sintaxe básica usada pela linguagem C isto parecerá ser lógico para você. Se você não conhece a linguagem C ou alguma outra linguagem onde a sintaxe usada acima é usada, você provavelmente precisará de um livro introdutório sobre o PHP, dê uma lida nos primeiros capítulos do livro, ou leia a parte sobre a Referência da Linguagem no manual. Você pode encontrar uma lista de livros sobre PHP em at » http://www.php.net/books.php.

O segundo conceito que iremos abordar é a chamada à função strstr(). A função strstr() é trazida junto com o PHP, ela faz uma busca em uma palavra por uma outra palavra. Neste caso nós procuramos pela palavra "MSIE" dentro de $_SERVER["HTTP_USER_AGENT"]. Se a palavra for encontrada, a função returna TRUE e se ela não for encontrada a função retorna FALSE. Se o retorno for TRUE, a declaração if ocorre e o código dentro dela é executado. Caso contrário, o código não é executado. Sinta-se à vontade para criar exemplos similares com o if, else, e outras funções como a strtoupper() e strlen(). Cada uma delas está no manual com seus respectivos exemplos.

Nós podemos avançar agora e mostrar à você como alternar entre os modos PHP mesmo que você esteja executando blocos de códigos:

Exemplo #4 Mesclando entre os modos PHP e HTML

<?php
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
?>
<h3>strstr retorna verdadeiro</h3>
<center><b>Você está usando o Internet Explorer</b></center>
<?php
} else {
?>
<h3>strstr retorna falso</h3>
<center><b>Você não está usando o Internet Explorer</b></center>
<?php
}
?>

Um exemplo de saída deste script poderia ser:

<h3>strstr retorna verdadeiro</h3>
<center><b>Você está usando o Internet Explorer</b></center>

Ao invés de usar a declaração echo do PHP para imprimir a saída dos dados, nós saímos do modo do PHP e usamos o HTML normal. O importante à notar aqui é que a lógica do script continua intacta. Somente alguns blocos HTML será enviados de acordo com o que a declaração strstr() retornar, ou seja TRUE ou FALSE. Em outras palavras, se a palavra MSIE for encontrada ou não.



Tratando Formulários

Uma das características mais fortes do PHP é o jeito como ele trata formulários HTML. O conceito básico que é importante entender é que qualquer elemento de formulário em um formulário irá automaticamente ficar disponível para você usá-los em seus scripts PHP. Por favor leia a seção Variáveis externas do PHP para mais informaçõess exemplos de como usar formulários com PHP. Aqui vai um exemplo:

Exemplo #1 Um simples formulário HTML

<form action="acao.php" method="POST">
 Seu nome <input type="text" name="nome" />
 Sua idade: <input type="text" name="idade" />
 <input type="submit">
</form>

Não há nada de especial neste formulário. É um formulário HTML comum sem nenhuma tag especial de qualquer tipo. Quando o usuário preencer este formulário e clicar no botão enviar, a página action.php é chamada. Neste arquivo nós teremos algo como este:

Exemplo #2 Imprimindo dados de nosso formulário

Oi <?php echo $_POST["nome"]; ?>.
Você tem <?php echo $_POST["idade"]; ?> anos.

Um exemplo de saída deste script seria:

Oi Thomas.
Você tem 18 anos.

É óbvio o que este script faz. Não há nada de mais nele. As variáveis $_POST["nome"] e $_POST["idade"] são automaticamente criadas para você pelo PHP. Antigamente nós usávamos a auto-global $_SERVER, agora nós simplesmente usamos a auto-global $_POST que contém todos os dados vindos do POST. Se você usar o método GET então nossas informações residirão na auto-global $_GET. Você também pode usar a auto-global $_REQUEST se você não se importa com o tipo de dados que vêm do seu formulário. Esta auto-global contém uma mescla de GET, POST, COOKIE e FILE. Veja também a função import_request_variables().



Usando códigos antigos com a nova versão do PHP

Agora que o PHP cresceu e é uma linguagem de script popular, há muitos recursos por ai que fazem uma listagem de códigos que você pode reusar em seus próprios scripts. Para a maioria dos desenvolvedores da linguagem PHP tentaram manter a compatibilidade, para que um script escrito em uma versão antiga do PHP, pude-se (deveria) rodar sem nenhuma alteração em uma versão mais nova do PHP, em prática algumas alterações serão geralmente necessárias.

Duas das coisas mais importantes recentemente alteradas que afetam um código antigo é:

  • O velho método que não está mais em uso que é o de usar arrays $HTTP_*_VARS (que precisam ser indicados como sendo globais quando usados dentro de uma função ou método). A seguir nós abordaremos os arrays auto-globais no PHP » 4.1.0. Eles são: $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_REQUEST, e $_SESSION. Os antigos arrays $HTTP_*_VARS, como os $HTTP_POST_VARS, ainda existem até a versão do PHP 3.
  • Variáveis externas não são mais registrdas no escopo global por padrão. Em outras palavras, com o PHP » 4.2.0 a diretiva register_globals está desligada por padrão no arquivo php.ini. O método utilizado atualmente é o de acessar estes valores via arrays auto-globais como mencionado acima. Scripts antigos, livros, e tutoriais podem estar utilizando a diretiva ligada. Se ela estiver ligada, por exemplo, você poderá utilizar a variável $id da URL http://www.exemplo.com/pagina.php?id=42. Se a diretiva estiver desligada, você usará $_GET['id'].

Para mais detalhes destas alterações, veja a seção variáveis pré-definidas.



O que mais?

Com o que você sabe agora você deverá estar apto à entender a maioria do manual e também os vários exemplos de scripts disponíveis no arquivo de exemplos. Você também pode encontrar outros exemplos nos sites do php.net e nos links da seção: » http://www.php.net/links.php.





Instalação e Configuração


Considerações Gerais sobre Instalação

Antes de começar a instalar o PHP, primeiro você deve saber o que você deseja fazer com ele. Existem três principais formas de se usar o PHP, como descrito na seção O que o PHP pode fazer? do manual:

  • Websites e aplicações web (script do lado do servidor)
  • Scripts para linha de comando
  • Aplicações de Desktop (GUI)

Para a primeira forma, e mais comum, você precisa de três coisas: o prório PHP, um servidor web e um cliente (browser) web. Você provavelmente já tem um browser, e dependendo da configuração do seu sistema operacional, vocêo pode tambem ter um servidor web (Ex.: Apache no Linux e MacOS X; IIS no Windows). Você também pode alugar um host em uma companhia qualquer. Dessa maneira, você não precisa configurar nada por conta própria, apenas escrever os seus scripts PHP, enviar (upload) para o servidor que você alugou, e ver os resultados no seu browser.

No caso de você instalar o servidor e o PHP por contra própria, você tem duas escolhas para o método de conexão do PHP com o servidor. Para muitos servidores o PHP tem uma interface direta de módulo (também chamada de SAPI). Entre esses servidores estão Apache, Microsoft Internet Information Server, Netscape e iPlanet. Muitos outros servidores têm suporte para ISAPI, a interface de módulo da Microsoft (OmniHTTPd por exemplo). Se o PHP não tiver suporte de módulo para o seu servidor web, você também pode usá-lo como processador CGI ou FastCGI. Isso significar configurar seu servidor para usar executáveis CGI do PHP para processar todas as requisições à arquivos PHP no servidor.

Se você também estiver interessado em usar o PHP para criar scripts em linha de comandos (Ex.: criar scripts que geram imagens enquanto estão offline, ou processar arquivos de texto dependendo de alguns argumentos que você passar ao script), você pode precisar do executável de linha de comando. Para mais informações, leia a seção sobre criando aplicações de linha de comando com o PHP. Nesse caso, vocêo não precisa de servidor nem de um browser.

Com o PHP, você também pode criar aplicações para desktop com interface gráfica (GUI) usando a extenção PHP-GTK. Isso é uma abordagem completamente diferente da criação de páginas web, já que a saída não é em HTML, mas o manuseio de janelas e objetos dentro delas. Para mais informações sobre PHP-GTK, por favor » visite o site dedicado à essa extensão. PHP-GTK não é inclusa na distribuição oficial do PHP.

Por enquanto, essa seção trata da instalação do PHP em servidores web no Unix e Windows como módulos dos servidores e executáveis CGI. Você também pode encontrar inforamação sobre executáveis de linha de comando nas seções seguintes.

O código fonte do PHP e distribuições binárias para Windows podem ser encontradas em » http://www.php.net/downloads.php. Nós recomentandos que você escolha um » mirror mais próximo de vocêo para baixar as distribuições.



Instalação em sistemas Unix

Índice

Essa seção é um guia geral para configuração e instalação do PHP em sistemas Unix. Verifique se existe uma seção específica para usa plataforma ou servidor web antes de começar o processo.

Como nosso manual destaca na seção Considerações Gerais sobre Instalação, nós estamos lidando principalmente com configurações web do PHP nessa seção, embora cobriremos instalação do PHP para uso em linha de comando também.

Existem várias maneiras de instalar o PHP para a plataforma Unix, ou com um processo de compilar e configurar, ou atráves de vários métodos pré-empacotados. Essa documentação é focada principalmente no processo de compilação e configuração do PHP. Muitos sistemas baseados no Unix tem alguma forma de sistema de instalação de pacotes. Isso pode ajudar na instalação de uma configuração padrão, mas se você precisar ter uma série de características diferentes (como um servidor seguro, ou um driver de banco de dados diferente), você pode precisar montar o PHP e/ou servidor web. Se você não estiver familiarizado com o processo de montar e compilar seu próprio software, vale a pena checar se alguém já montou um pacote do PHP com as características que você precisa.

Pré-requisitos de software e de conhecimento para compilar:

  • Conhecimento básico de Unix (ser capaz de operar o "make" e um compilador C)
  • Um compilador ANSI C
  • flex: Versão 2.5.4
  • bison: Versão 1.28 (preferida), 1.35, ou 1.75
  • Um servidor web
  • Qualquer componentes específicos para os módulos (como gd, bibliotecas pdf, etc.)

O processo inicial de configuração de instalação do PHP é controlado pelo uso de opções de linha de comando do script configure. Você pode pegar a lista de todas as opções disponíveis junto com uma pequena explicação executando o comando ./configure --help. Nosso manual documenta as diferentes opções separadamente. Você encontrará as opções principais no apêndice, enquanto as opções específicas das diferentes extensões são descritas nas páginas de referência.

Quando o PHP é configurado, você está pronto para montá-lo como módulo e/ou executável. O comando make deve tomar conta disso. Se ele falhar e você não conseguir descobrir a razão, veja a Seção de Problemas.

Apache 1.3.x em sistemas Unix

Essa seção contem notas e dicas específicas para a instação do Apache e do PHP em plataformas Unix. Também temos instruções e notas para o Apache 2 em uma página separada.

Você pode selecionar argumentos para adicionar ao configure na linha 10 abaixo através da Lista completa de opções do configure e das opções específicas das extensões em seus respectivos lugares no manual. Os números de versões foram omitidos aqui, para assegurar que as instruções não estejam incorretas. Você deverá trocar o 'xxx' aqui com os valores corretos dos seus arquivos.

Exemplo #1 Instruções de Instalação (Apache Versão de Módulo Compartilhado) para PHP

1.  gunzip apache_xxx.tar.gz
2.  tar -xvf apache_xxx.tar
3.  gunzip php-xxx.tar.gz
4.  tar -xvf php-xxx.tar
5.  cd apache_xxx
6.  ./configure --prefix=/www --enable-module=so
7.  make
8.  make install
9.  cd ../php-xxx

10. Agora, configure o seu PHP. É aqui que você personaliza seu PHP
    com várias opções, como quais extensões serão habilitadas. Execute o
    comando ./configure --help para uma lista das opções disponíveis. No nosso exemplo
    nós faremos uma simples configuração com Apache 1 e suporte ao MySQL. Seu caminho
    para o arquivo apxs pode ser diferente do exemplo.

      ./configure --with-mysql --with-apxs=/www/bin/apxs

11. make
12. make install

    Se você decidir mudar as opções de seu configure depois da instalação
    você precisará somente repetir os últimos 3 passos. Você somente precisará
    reiniciar o Apache para o novo módulo funcionar. Não será necessário recompilar
    o Apache.

    Note que, por padrão, 'make install' também instalará PEAR, além
    de várias ferramentas do PHP como phpize, instalar o CLI do PHP e mais.

13. Configurando seu arquivo php.ini:

      cp php.ini-dist /usr/local/lib/php.ini

    Você pode editar o seu arquivo .ini para configurar as opções do PHP.  Se
    você preferir que este arquivo fique em outro lugar, use a opção
    --with-config-file-path=/caminho no passo 10.

    Se ao invés de escolher o arquivo php.ini-dist, você escolher o arquivo php.ini-recommended,
    leia a lista de mudanças dentro do mesmo, uma vez que elas afetam a maneira como o PHP se comporta.

14. Edite o seu arquivo httpd.conf para carregar o módulo do PHP. O caminho no lado direito
    do comando LoadModule deve apontar para para o caminho do módulo PHP no seu sistema.
    O comando make install acima já deve ter adicionado estas linhas, mas tenha certeza
    de que as linhas abaixo foram adicionadas ao arquivo.

    Para o PHP 4:

      LoadModule php4_module libexec/libphp4.so

    Para o PHP 5:

      LoadModule php5_module libexec/libphp5.so

15. Em seguida, na seção AddModule do arquivo httpd.conf, em algum lugar
    abaixo de ClearModuleList, adicione isto:

    Para o PHP 4:

      AddModule mod_php4.c

    Para o PHP 5:

      AddModule mod_php5.c

16. Diga ao Apache para avaliar certas extensões como PHP. Por exemplo,
    vamos fazer o Apache interpretar a extensão .php como um script PHP. Você poderia
    ter qualquer extensão(ões) avaliadas como PHP simplesmente adicionando-as, com
    cada uma separada por um espaço. Vamos adicionar .phtml para demonstrar.

      AddType application/x-httpd-php .php .phtml

    Também é comum configurar a extensão .phps para mostrar o código-fonte
    do script PHP com highlight, isso pode ser feito com:

      AddType application/x-httpd-php-source .phps

17. Use seu procedimento normal para iniciar o servidor Apache. (Você deve
    parar e reiniciar o servidor, não somente fazer um reinício enviando
    um sinal HUP ou USR1.)

Outra maneira é instalar o PHP como um objeto estático:

Exemplo #2 Instruções de Instalação (Instalação como módulo estático do Apache) para o PHP

1.  gunzip -c apache_1.3.x.tar.gz | tar xf -
2.  cd apache_1.3.x
3.  ./configure
4.  cd ..

5.  gunzip -c php-5.x.y.tar.gz | tar xf -
6.  cd php-5.x.y
7.  ./configure --with-mysql --with-apache=../apache_1.3.x
8.  make
9.  make install

10. cd ../apache_1.3.x

11. ./configure --prefix=/www --activate-module=src/modules/php5/libphp5.a
    (A linha acima está correta! Sim, sabemos que libphp4.a não existe nesse
    estágio. E nem deveria. Ele será criado.)

12. make
    (você deve agora ter um binário httpd que você pode copiar para o diretório bin do Apache. Se
    for sua primeira instalação então você precisa executar "make install" também)

13. cd ../php-5.x.y
14. cp php.ini-dist /usr/local/lib/php.ini

15. Você pode editar o arquivo /usr/local/lib/php.ini para editar as opçso do PHP.
    Edite o seu arquivo httpd.conf ou srm.conf e adicione:
    AddType application/x-httpd-php .php

Nota: Substitua php-5 por php-4 e php5 por php4 no PHP 4.

Dependendo da sua instalação do Apache e das variações Unix, existem inúmeras maneiras possíveis de parar e reiniciar o servidor. Abaixo estão algumas linhas típicas usadas para reiniciar e o servidor, para instalações de versões de apache/unix. Você deve trocar /caminho/para/ pelo caminho destas aplicações nos seus sistemas.

Exemplo #3 Exemplo de comandos para reinicialização do Servidor Apache

1. Várias distribuições Linux e variantes do SysV:
/etc/rc.d/init.d/httpd restart

2. Usando os scripts apachectl:
/path/to/apachectl stop
/path/to/apachectl start

3. httpdctl and httpsdctl (Usando OpenSSL), igual ao apachectl:
/path/to/httpsdctl stop
/path/to/httpsdctl start

4. Usando mod_ssl, ou outro servidor SSL, você pode querer iniciar
ou reiniciar manualmente:
/path/to/apachectl stop
/path/to/apachectl startssl

As localizações dos binários apachectl e http(s)dctl geralmente variam. Se o seu sistema tem os comandos locate ou whereis ou which, estem podem lhe ajudar a encontrar os programas de controle do servidor.

Exemplos diferentes de compilação do PHP para apache estão a seguir:

./configure --with-apxs --with-pgsql

Isso criará uma biblioteca compartilhada libphp5.so (ou libphp4.so no PHP 4) que é carregada pelo Apache ao adicionar uma linha LoadModule no arquivo httpd.conf do Apache. O suporte ao PostgreSQL é embutido nessa biblioteca.

./configure --with-apxs --with-pgsql=shared

Isto irá criar uma biblioteca compartilhada libphp4.so para o Apache, mas isto também criará uma biblioteca compartilhada pgsql.so que é carregada com o PHP tanto ao usar a diretiva de extensão no arquivo php.ini ou então carregando ela explícitamente no script usando a função dl().

./configure --with-apache=/path/to/apache_source --with-pgsql

Isto irá criar uma biblioteca libmodphp5.a, o arquivo mod_php5.c e vários arquivos dependentes e copiará eles para o diretório src/modules/php5 na árvore de diretório do código fonte do Apache. Então você compilará o Apache usando a opção --activate-module=src/modules/php5/libphp5.a e o sistema de compilação do Apache irá criar o arquivo libphp5.a e fará um link estático dentro do binário httpd (substitua php5 por php4 no PHP 4). O suporte ao PostgreSQL estará incluído diretamente neste binário httpd, então o resultado final aqui será um único arquivo binário httpd que incluirá tudo do Apache e tudo do PHP.

./configure --with-apache=/path/to/apache_source --with-pgsql=shared

Mesmo que o anterior, exceto em vez de incluir o suporte ao PostgreSQL diretamente no binário httpd você terá uma biblioteca compartilhada pgsql.so que você poderá carregar com o PHP tanto do arquivo php.ini ou diretamente usando a função dl().

Quanto estiver decidindo compilar o PHP com maneiras diferentes, você deverá considerar as vantages e disvantagens de cada método. Complilando como uma biblioteca compartilhada significará que você poderá compilar o apache separadamente, e não terá que recompilar tudo quando quiser adicionar ou mudar o seu PHP. compilando o PHP dentro do apache (método estático) significará que o PHP irá carregar e rodar rapidamente. Para maiores informações, veja a página web do Apache que fala sobre » Suporte a Objetos Dinâmicos Compartilhados.

Nota: O arquivo httpd.conf padrão do Apache atualmente já contém uma seção que se parece com isso:

User nobody
Group "#-1"
A menos que você mude isto para "Group nogroup" ou algo assim ("Group daemon" é também muito comum) o PHP não estará apto a abrir arquivos.

Nota: Tenha certeza de especificar a versão instalada do apxs quando usar a opção --with-apxs=/caminho/para/apxs. Você NÂO deverá usar a versão do apxs que está nos fontes do apache e sim a que está atualmente instalada no seu sistema.


Apache 2.0 em sistemas Unix

Essa seção contém notas e dicas específicas para a instalação do Apache 2.0 com o PHP em sistemas Unix.

Aviso

Nós não recomendamos a utilização de um threaded MPM em produção com o Apache2. Use ao invés prefork MPM, ou use Apache1. para informações sobre o motivo, leia este faq sobre usando Apache2 com um threaded MPM

Recomendamos a » Documentação do Apache para obter um entendimento básico do servidor Apache 2.0.

Nota: Notas de compatibilidade do PHP e Apache 2.0.x
As seguintes versões do PHP são compatíveis com a versão mais recente do Apache 2.0.x:

Essas versões do PHP são compatíveis com Apache 2.0.40 ou superior.
Suporte a SAPI do Apache 2.0 começou no PHP 4.2.0. PHP 4.2.3 funciona com Apache 2.0.39, não use qualquer outra versão de Apache com PHP 4.2.3. No entando, a configuração recomendada é usar o 4.3.0 ou superior com a versão mais recente do Apache2.
Todas as versões mencionadas do PHP ainda funcionarão com Apache 1.3.x.

Baixe a versão mais recente do » Apache 2.0 e uma versão adequada do PHP dos lugares mencionados acima. Esse guia rápido cobre apenas o básico para para começar a usar o Apache 2.0 e o PHP. Para mais informação, leia a » Documentação do Apache Os número de versão foram omitidos para assegurar que as instruções não estejam incorretas. Você precisará substituir o 'NN' com os valores corretos dos seus arquivos.

Exemplo #1 Instruções de Instalação (Versão de Módulo Compartilhado do Apache 2)

1.  gzip -d httpd-2_0_NN.tar.gz
2.  tar xvf httpd-2_0_NN.tar
3.  gunzip php-NN.tar.gz
4.  tar -xvf php-NN.tar
5.  cd httpd-2_0_NN
6.  ./configure --enable-so
7.  make
8.  make install

    Agora você tem o Apache 2.0.NN disponível no diretório /usr/local/apache2,
    configurado com suporte a módulo compartilhado e o prefork MPM padrão.
    Para testar a instalação use o procedimento normal para iniciar
    o servidor Apache, ex.:
    /usr/local/apache2/bin/apachectl start
    e pare o servidor para ir para a configuração do PHP:
    /usr/local/apache2/bin/apachectl stop.

9.  cd ../php-NN

10. Agora, configure o seu PHP. É aqui que você personaliza seu PHP
    com várias opções, como quais extensões serão habilitadas. Execute o
    comando ./configure --help para uma lista das opções disponíveis. No nosso exemplo
    nós faremos uma simples configuração com Apache 2 e suporte ao MySQL. Seu caminho
    para o arquivo apxs pode ser diferente do exemplo. De fato, o binário pode até ser
    chamado de apxs2 no seu sistema.

      ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql

11. make
12. make install

    Se você decidir mudar as opções de seu configure depois da instalação
    você precisará somente repetir os últimos 3 passos. Você somente precisará
    reiniciar o Apache para o novo módulo funcionar. Não será necessário recompilar
    o Apache.

    Note que, por padrão, 'make install' também instalará PEAR, além
    de várias ferramentas do PHP como phpize, instalar o CLI do PHP e mais.

13. Configurando seu arquivo php.ini:

    cp php.ini-dist /usr/local/lib/php.ini

    Você pode editar o seu arquivo .ini para configurar as opções do PHP.  Se
    você preferir que este arquivo fique em outro lugar, use a opção
    --with-config-file-path=/caminho no passo 10.

    Se ao invés de escolher o arquivo php.ini-dist, você escolher o arquivo php.ini-recommended,
    leia a lista de mudanças dentro do mesmo, uma vez que elas afetam a maneira como o PHP se comporta.

14. Edite o seu arquivo httpd.conf para carregar o módulo do PHP. O caminho no lado direito
    do comando LoadModule deve apontar para para o caminho do módulo PHP no seu sistema.
    O comando make install acima já deve ter adicionado estas linhas, mas tenha certeza
    de que as linhas abaixo foram adicionadas ao arquivo.

    Para o PHP 4:

      LoadModule php4_module libexec/libphp4.so

    Para o PHP 5:

      LoadModule php5_module libexec/libphp5.so

15. Diga ao Apache para avaliar certas extensões como PHP. Por exemplo,
    vamos fazer o Apache interpretar a extensão .php como um script PHP. Você poderia
    ter qualquer extensão(ões) avaliadas como PHP simplesmente adicionando-as, com
    cada uma separada por um espaço. Vamos adicionar .phtml para demonstrar.

      AddType application/x-httpd-php .php .phtml

    Também é comum configurar a extensão .phps para mostrar o código-fonte
    do script PHP com highlight, isso pode ser feito com:

      AddType application/x-httpd-php-source .phps

16. Use seu procedimento normal para iniciar o servidor Apache ex.:

      /usr/local/apache2/bin/apachectl start

Seguindo os passos acima você terá rodando o Apache 2.0 com suporte para o PHP como um módulo SAPI. Claro que existem muitas outras opções de configuração disponível para ambos, Apache e o PHP. Para mais informações use o comando ./configure --help na árvore de arquivos fontes correspondente. Caso você desejar compilar uma versão multithreaded do Apache 2.0, você deve sobrescrever o Módulo-MPM padrão prefork ou com o módulo worker ou com o perchild. Para fazer isso, acrescente ao comando configure no passo 6 acima a opção --with-mpm=worker ou --with-mpm=perchild. Tome cuidado com as consequências e entenda o que está fazendo. Para mais informações, leia a documentação do Apache sobre os » Módulos-MPM.

Nota: Se você quiser usar negociação de conteúdo, leia o FAQ relacionado à MultiViews.

Nota: Para compilar uma versão multithreaded do Apache, seu sistema deve suportar threads. Isso também implica compilar o PHP com o Zend Thread Safety (ZTS) experimental. Portanto, nem todas as extensões podem estar disponíveis. A configuração recomendada para compilar o Apache é com o Módulo-MPM prefork padrão.



Lighttpd 1.4 on Unix systems

This section contains notes and hints specific to Lighttpd 1.4 installs of PHP on Unix systems.

Please use the » Lighttpd trac to learn how to install Lighttpd properly before continuing.

Fastcgi is the preferred SAPI to connect PHP and Lighttpd. Fastcgi is automagically enabled in php-cgi in PHP 5.3, but for older versions configure PHP with --enable-fastcgi. To confirm that PHP has fastcgi enabled, php -v should contain PHP 5.2.5 (cgi-fcgi) Before PHP 5.2.3, fastcgi was enabled on the php binary (there was no php-cgi).

Letting Lighttpd spawn php processes

To configure Lighttpd to connect to php and spawn fastcgi processes, edit lighttpd.conf. Sockets are preferred to connect to fastcgi processes on the local system.

Exemplo #1 Partial lighttpd.conf

server.modules += ( "mod_fastcgi" )

fastcgi.server = ( ".php" =>
  ((
    "socket" => "/tmp/php.socket",
    "bin-path" => "/usr/local/bin/php-cgi",
    "bin-environment" => (
      "PHP_FCGI_CHILDREN" => "16",
      "PHP_FCGI_MAX_REQUESTS" => "10000"
    ),
    "min-procs" => 1,
    "max-procs" => 1,
    "idle-timeout" => 20
  ))
)

The bin-path directive allows lighttpd to spawn fastcgi processes dynamically. PHP will spawn children according to the PHP_FCGI_CHILDREN environment variable. The "bin-environment" directive sets the environment for the spawned processes. PHP will kill a child process after the number of requests specified by PHP_FCGI_MAX_REQUESTS is reached. The directives "min-procs" and "max-procs" should generally be avoided with PHP. PHP manages its own children and opcode caches like APC will only share among children managed by PHP. If "min-procs" is set to something greater than 1, the total number of php responders will be multiplied PHP_FCGI_CHILDREN (2 min-procs * 16 children gives 32 responders).

Spawning with spawn-fcgi

Lighttpd provides a program called spawn-fcgi to ease the process of spawning fastcgi processes easier.

Spawning php-cgi

It is possible to spawn processes without spawn-fcgi, though a bit of heavy-lifting is required. Setting the PHP_FCGI_CHILDREN environment var controls how many children PHP will spawn to handle incoming requests. Setting PHP_FCGI_MAX_REQUESTS will determine how long (in requests) each child will live. Here's a simple bash script to help spawn php responders.

Exemplo #2 Spawning FastCGI Responders

#!/bin/sh

# Location of the php-cgi binary
PHP=/usr/local/bin/php-cgi

# PID File location
PHP_PID=/tmp/php.pid

# Binding to an address
#FCGI_BIND_ADDRESS=10.0.1.1:10000
# Binding to a domain socket
FCGI_BIND_ADDRESS=/tmp/php.sock

PHP_FCGI_CHILDREN=16
PHP_FCGI_MAX_REQUESTS=10000

env -i PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN \
       PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS \
       $PHP -b $FCGI_BIND_ADDRESS &

echo $! > "$PHP_PID"

Connecting to remote FCGI instances

Fastcgi instances can be spawned on multiple remote machines in order to scale applications.

Exemplo #3 Connecting to remote php-fastcgi instances

fastcgi.server = ( ".php" =>
   (( "host" => "10.0.0.2", "port" => 1030 ),
    ( "host" => "10.0.0.3", "port" => 1030 ))
)


Caudium

O PHP pode ser compilado como um módulo do Pike para o » servidor web Caudium. Siga as instruções abaixo para instalar o PHP 4 para o Caudium.

Exemplo #1 Instruções de Instalação para o Caudium

1.  Verifique que você tem o Caudium instalado antes de tentar
    instalar o PHP 4. Para que o PHP funcione corretamente, você precisará do Pike
    7.0.268 ou superior. Nesse exemplo, presumiremos que
    o Caudium foi instalado no diretório /opt/caudium/server/.
2.  Mude para o diretório php-x.y.z (onde x.y.z é o número da versão).
3.  ./configure --with-caudium=/opt/caudium/server
4.  make
5.  make install
6.  Reinicie o Caudium se ele estiver sendo executado.
7.  Entre na interface gráfica de configuração e vá no
    servidor virtual (virtual server) onde você adicionará suporte ao PHP 4.
8.  Clique em Adicionar Módulo (Add Module) e localize e depois adicione o módulo PHP 4 Script Support.
9.  Se a documentação disser que o 'O interpretador do PHP não está
    disponível', verifique que você reiniciou o servidor. Se você
    verificou, procure em /opt/caudium/logs/debug/default.1 por algum erro relacionado à
    <filename>PHP4.so</filename>. Também certifique-se que o arquivo
    <filename>caudium/server/lib/[pike-version]/PHP4.so</filename>
    está presente.
10. Configure o módulo do PHP se necessário.

Você pode, é claro, compilar o módulo do Caudium com suporte para as várias extensões disponíveis no PHP 4. Veja as páginas de referência por opções específicas para a extensão que você deseja.

Nota: Quando compilar o PHP 4 com suporte ao MySQL, você deve verificar que o código normal de cliente MySQL é usado. Caso contrário, pode haver conflitos se seu Pike já tiver suporte ao MySQL. Você faz isso especificando um diretório de instalação do MySQL com a opção --with-mysql.



Notas relacionadas à fhttpd

Para compilar o PHP como módulo fhttpd, responda "yes" para "Build as an fhttpd module?" (a opção do script configure --with-fhttpd=DIR deve ser usada) e especifique o diretório base dos fontes do fhttpd. O diretório padrão é /usr/local/src/fhttpd. Se você estiver rodando fhttpd, compilar o PHP como um módulo lhe dará melhor performance, mais controle e capacidade de execução remota.

Nota: Suporte para fhttpd não está mais disponível a partir do PHP 4.3.0.



Sun, iPlanet e servidores Netscape no Solaris da Sun

Essa seção contem notas e dicas específicas para instação do PHP nos servidores un Java System Web Server, Sun ONE Web Server, iPlanet e Netscape no Solaris.

A partir do PHP 4.3.3, você pode usar scripts PHP com o módulo NSAPI para gerar listagem de diretórios e páginas de erro personalizadas. Funções adicionais para compatibilidade com o Apache também estão disponíveis. Para suporte nos webservers atuais, leia a nota sobre sub-requisições.

Você pode achar mais informações sobre como instalar o PHP para o Servidor Netscape Enterprise (NES) aqui: » http://benoit.noss.free.fr/php/install-php4.html

Para compilar o PHP com servidores web Sun JSWS/Sun ONE WS/iPlanet/Netscape, entre o diretório apropriado de instalação para a opção --with-nsapi=[DIR] O diretório padrão é, normalmente /opt/netscape/suitespot/. Por favor, leia também /php-xxx-version/sapi/nsapi/nsapi-readme.txt.

  1. Instale os seguintes pacotes de » http://www.sunfreeware.com/ ou outro site de download:

    • autoconf-2.13
    • automake-1.4
    • bison-1_25-sol26-sparc-local
    • flex-2_5_4a-sol26-sparc-local
    • gcc-2_95_2-sol26-sparc-local
    • gzip-1.2.4-sol26-sparc-local
    • m4-1_4-sol26-sparc-local
    • make-3_76_1-sol26-sparc-local
    • mysql-3.23.24-beta (se você quiser suporte ao MySQL)
    • perl-5_005_03-sol26-sparc-local
    • tar-1.13 (GNU tar)

  2. Assegure-se que seu PATH inclue os diretórios apropriados PATH=.:/usr/local/bin:/usr/sbin:/usr/bin:/usr/ccs/bin E está disponível para o seu sistema export PATH .
  3. gunzip php-x.x.x.tar.gz (se você tiver uma distribuição .gz, caso contrário vá para o passo 4).
  4. tar xvf php-x.x.x.tar
  5. Mude para o diretório recém-criado: cd ../php-x.x.x
  6. Para o passo seguinte, assegure-se de que /opt/netscape/suitespot/ é onde o seu servidor Netscape está instalado. Caso contrário, mude o comando abaixo para o caminho correto e execute:

    ./configure --with-mysql=/usr/local/mysql \
    --with-nsapi=/opt/netscape/suitespot/ \
    --enable-libgcc
    

  7. Execute make seguido de make install.

Depois de fazer a instalação básica e ler o arquivo readme apropriado, você pode precisar executar alguns passos extras de configuração.

Instruções de Configuração para o Sun/iPlanet/Netscape

Primeiramente, você pode preciasr adicionar alguns caminhos para a váriavel de ambiente LD_LIBRARY_PATH para que o servidor ache as bibliotecas compartilhadas. A melhor maneira de fazer isso é no script de inicialização do ser servidor web. Esse script normalmente está localizado em: /caminho/para/servidor/https-nome_do_servidor/start. Você pode precisar também de editar os arquivos de configuração que estão localizados em: /caminho/para/servidor/https-nome_do_servidor/config/.

  1. Adicione a seguinte linha no arquivo mime.types (você pode fazer isso pelo servidor de administração):

    type=magnus-internal/x-httpd-php exts=php
    

  2. Edite o arquivo magnus.conf (para servidores >= 6) ou o arquivo obj.conf (para servidores < 6) e adicione a seguinte biblioteca compartilhada que pode variar dependendo do seu sistema, ela se parecererá com /opt/netscape/suitespot/bin/libphp4.so. Você deve colocar as seguintes linhas após mime types init.

    Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="/opt/netscape/suitespot/bin/libphp4.so"
    Init fn="php4_init" LateInit="yes" errorString="Failed to initialize PHP!" [php_ini="/path/to/php.ini"]
    
    (PHP >= 4.3.3) O parâmetro php_ini é opcional mas com ele você pode colocar seu arquivo php.ini no diretório config do seu servidor web.

  3. Configure o objeto padrão no arquivo obj.conf (para classes de servidor virtuais [versão 6.0+] no arquivo vserver.obj.conf):

    <Object name="default">
    .
    .
    .
    .#NOTA Essa linha deve acontecer após todos as linhas 'ObjectType' e antes de todas as linas 'AddLog'
    Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...]
    .
    .
    </Object>
    
    (PHP >= 4.3.3) Como parâmetros adicionais, você pode acrescentar valores especiais do php.ini, por exemplo, você pode editar um docroot="/path/to/docroot" específico para o contexto php4_execute chamado. Para valores booleanos, use 0/1 como valor, não "On","Off",... (isso não funcionará corretamente) ,ex.: zlib.output_compression=1 ao invés de zlib.output_compression="On"

  4. Isso só é necessários se você quiser configurar um diretório que apenas consiste de scripts PHP (assim como um diretório cgi-bin):

    <Object name="x-httpd-php">
    ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
    Service fn=php4_execute [inikey=value inikey=value ...]
    </Object>
    
    Depois que você pode configurar um diretório no servidor de Administração e atribuir a ele o estilo x-httpd-php. Todos os arquivo no diretório serão executados como PHP. Isso é bom para esconder uso do PHP renomeando os arquivos para .html.

  5. Configuração de autenticação: autenticação do PHP não pode ser usada com qualquer outra autenticação. TODA AUTENTICAÇÃO E PASSADA PARA O SEU SCRIPT PHP. Para configurar autenticação via PHP para o servidor todo, adicione a seguinte linha para o seu objeto padrão:

    <Object name="default">
    AuthTrans fn=php4_auth_trans
    .
    .
    .
    </Object>
    

  6. Para usar autenticação via PHP em apenas um diretório, adicione o seguinte:

    <Object ppath="d:\path\to\authenticated\dir\*">
    AuthTrans fn=php4_auth_trans
    </Object>
    

Nota: O tamanho da pilha que o PHP usa depende da configuração do servidor web. Se você tiver problemas com scripts PHP muito grandes, é recomendado aumentar o tamanho da pilha com o Admin Server (na seção "MAGNUS EDITOR").

Ambiente CGI e modificações recomendadas ao arquivo php.ini

É importante ter em mente quando escrever scripts PHP que os servidores web Sun JSWS/Sun ONE WS/iPlanet/Netscape são multithreaded. Por isso, todas as requisições estão rodando no mesmo espaço de processo (o espaço do servidor web em si) e esse espaço só tem um ambiente. Se você quiser usar variáveis CGI como PATH_INFO, HTTP_HOST etc, não é correto tentar fazer da maneira como PHP antigo faz, com a função getenv() ou de maneira similar (registrando globais ao ambiente, $_ENV). Você só pegaria o ambiente do servidor web sem qualquer variáveis CGI válidas.

Nota: Por que existem variáveis CGI inválidas no ambiente?
Resposta: Isso é porque você iniciou o processo do servidor do admin server que roda o script de iniciação do mesmo, você queria iniciar como um script CGI (um script CGI dentro do admin server!). Isso é porque o ambiente do servidor web iniciado tem algumas variáveis CGI de ambiente nele. Você pode testar isso iniciando o servidor web sem ser do admin server. Use a linha de comando como usuário root e inicie-o manualmente - você verá que não exite nenhuma variável CGI de ambiente.

Simplesmente mudando seus scripts para pegar variáveis CGI é a maneira correta para o PHP 4.x usando o superglobal $_SERVER. Se você tiver scripts velhos que usam $HTTP_HOST, etc., você deve ligar register_globals no arquivo php.ini e mudar a ordem das variáveis também (importante: remova "E" de lá, porque voe não precisa do ambiente aqui):

variables_order = "GPCS"
register_globals = On

Uso especial para páginas de erro e listagem de diretório auto-geradas (PHP >= 4.3.3)

Você pode usar o PHP para gerar as páginas de erro para "404 Not Found" ou similares. Adicione a seguinte linha no objeto do arquivo obj.conf para cada página de erro que você quiser sobrescrever:

Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inikey=value...]
Onde XXX é o código do erro HTTP. Por favor remova qualquer outra diretiva Error que possa interferir com as suas. Se você quiser colocar uma página para todos os erros que podem existir, tire o parâmetro code. Seu script pode pegar o código do erro com $_SERVER['ERROR_TYPE'].

Outra possibilidade é criar uma listagem do diretório auto-gerada. Apenas crie um script PHP que mostra uma listagem do diretório e substitua o padrão correspondente Service line for type="magnus-internal/directory" no arquivo obj.conf pelo seguinte:

Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/script.php" [inikey=value inikey=value...]
Tanto para os erros e as páginas de listagem do diretório a URI original e a URL traduzida estão nas variáveis $_SERVER['PATH_INFO'] e $_SERVER['PATH_TRANSLATED'].

Nota sobre nsapi_virtual() e sub-requisições(PHP >= 4.3.3)

O módulo NSAPI agora suporta a função nsapi_virtual() (sinônima (alias): virtual()) para fazer sub-requisições no servidor web e inserir o resultado na página web. Essa função usa algumas funcionalidades não documentadas da biblioteca NSAPI. No Unix, o módulo procura automaticamente para as funções necessárias e as usa se estiverem disponíveis. Se não, nsapi_virtual() é desabilitada.

Nota: Mas esteja avisado: Suporte para nsapi_virtual() é EXPERIMENTAL!!!



CGI e instalações de linha de comando

O padrão é compilar o PHP como um programa CGI. Isso cria um interpretador de linha de comando, que pode ser usado para processamento de CGI, ou para criação de scripts não relacionados com a web. Se você estiver executando um servidor web que suporta o PHP como módulo, você deve geralmente usar essa opção por razões de performance. No entanto, a versão CGI permite que usuários executem diferentes páginas com PHP usando diferentes ids de usuário.

Aviso

Um servidor dispoto em modo CGI está aberto para várias vulnerabilidades possíveis. Por favor, leia nossa seção de segurança CGI para aprender em como se defender de tais ataques.

A partir do PHP 4.3.0, alguns acréscimos importentes aconteceram ao PHP. Um novo SAPI chamado CLI também existe e ele tem o mesmo nome que o binário CGI. O que é instalado no diretório {PREFIX}/bin/php depende das opções usadas com o comando configure e é descrito com mais detalhes na seção do manual chamada Usando o PHP da linha de comando. Para mais detalhes, por favor, leia essa seção do manual.

Testando

Se você compilou o PHP como um programa CGI, você pode testá-lo usando o comando make test. É sempre uma boa idéia testar os software que você compila. Dessa maneira, você pode achar um problema com o PHP na sua plataforma cedo, ao invés de ter de lidar com isso mais tarde.

Usando Variáveis

Algumas variáveis de ambientes fornecidas pelo servidor não são definidas na atual » especificação CGI/1.1. Apenas as seguintes variáveis são definidas lá: AUTH_TYPE, CONTENT_LENGTH, CONTENT_TYPE, GATEWAY_INTERFACE, PATH_INFO, PATH_TRANSLATED, QUERY_STRING, REMOTE_ADDR, REMOTE_HOST, REMOTE_IDENT, REMOTE_USER, REQUEST_METHOD, SCRIPT_NAME, SERVER_NAME, SERVER_PORT, SERVER_PROTOCOL, e SERVER_SOFTWARE. Todo o resto deve ser tratado como 'vendor extensions'.



Notas expecificas da instalação em HP-UX

Esta sessão contém notas e avisos especificos sobre a instalação do PHP em sistemas HP-UX.

Existem duas opções principais para instalar o PHP em sistemas HP-UX systems. Ou compila-lo, ou instalar um binário pré-compilado.

Pacotes oficiais pré-compilados podem ser encontrados aqui: » http://software.hp.com/

Até que esta sessão do manual seja rescrita, a documentação sobre compilar o PHP (e as extensões relacionadas) em sistemas HP-UX foi removida. Por enquanto, considere ler o seguinte recurso externo: » Construindo o Apache e o PHP em HP-UX 11.11



Notas de instalação para o OpenBSD

Essa seção contêm notas e dicas específicas para a instalação do PHP no » OpenBSD 3.6.

Usando Pacotes Binários

Usando pacotes binários para instalar o PHP no OpenBSD é o método recomendado e o mais simples. O pacote núcleo foi separado dos vários módulos, e cada um pode ser instalado e removido independentemente dos outros. Os arquivos necessários podem ser encontrados no CD do OpenBSD ou no FTP do site.

O pacote principal que você precisa instalar é o php4-core-4.3.8.tgz, que contem o engine básico (mais gettext e iconv). Depois, olhe os pacotes com módulos, como o php4-mysql-4.3.8.tgz ou php4-imap-4.3.8.tgz. Você precisa usar o comando phpxs para ativar e desativar esses módulos no seu arquivo php.ini.

Exemplo #1 Exemplo de instalação de pacote no OpenBSD

# pkg_add php4-core-4.3.8.tgz
# /usr/local/sbin/phpxs -s
# cp /usr/local/share/doc/php4/php.ini-recommended /var/www/conf/php.ini
  (adiciona o módulo mysql)
# pkg_add php4-mysql-4.3.8.tgz
# /usr/local/sbin/phpxs -a mysql
  (adiciona o módulo imap)
# pkg_add php4-imap-4.3.8.tgz
# /usr/local/sbin/phpxs -a imap
  (remove o módulo mysql para teste)
# pkg_delete php4-mysql-4.3.8
# /usr/local/sbin/phpxs -r mysql
  (instala as bibliotecas do PEAR)
# pkg_add php4-pear-4.3.8.tgz

Leia o manual de » packages(7) para mais informações sobre pacotes binários no OpenBSD.

Usando Ports

Você também pode compilar o PHP dos fontes usando a » árvore ports. No entanto, isso só é recomendado para usuários familiarizado com OpenBSD. O port do PHP 4 é dividido em dois sub-diretórios: núcleo e extensões. O diretório de extensões gera sub-pacotes para todos os módulos suportados pelo PHP. Se você achar que não quer criar alguns dos módulos, use o comando no_* FLAVOR. Por exemplo, se você quiser que o módulo imap seja ignorado, atribua à FLAVOR o valor no_imap.

Problemas Comuns

  • A instalação padrão do Apache roda dentro de uma » prisão de chroot(2), que restrigirá os scripts PHP a acessar arquivos abaixo de /var/www. Você irá, portanto, precisar criar um diretório /var/www/tmp para que os arquivos de sessão do PHP sejam guardados, ou usar um backend alternativo para sessões. Além disso, sockets de bancos de dados devem ser colocados dentro da prisão ou escutar na interface localhost. Se você usar funções de rede, alguns arquivos do diretório /etc como /etc/resolv.conf e /etc/services precisarão ser movidos para /var/www/etc. O pacote PEAR do OpenBSD instala automaticamente nos diretórios corretos da prisão, então nenhuma modificação especial é necessária lá. Mais informação sobre o Apache do OpenBSD está disponível no » FAQ do OpenBSD.
  • O pacote do OpenBSD 3.6 para a extensão » gd precisa do XFree86 instalado. Se você não deseja usar algumas das funcionalidaes de fontes que requerem o X11, instale o pacote php4-gd-4.3.8-no_x11.tgz.

Releases Antigas

Releases mais antigas do OpenBSD usam o sistema de FLAVORS para compilar um PHP estaticamente linkado. Já que é difícil gerar pacotes binários usando esse método, ele é depreciado agora. Você pode ainda usar as árvores de port velhas e estáveis se assim desejar, mas eles não tem suporte pelo time do OpenBSD. Se você tiver algum comentário sobre isso, o atual responsável pela manutenção do port é Anil Madhavapeddy (avsm at openbsd dot org).



Dicas de instalação específicas para o Solaris

Essa seção contêm notas e dicas específicas para a instalação do PHP em sistemas Solaris.

Software Necessário

Instalações do Solaris frequentemente não possuem compiladores C e suas ferramentas relacionadas. Leia esse FAQ para informação sobre porque usar versões GNU para algumas dessas ferramentas é necessário. Os softwares necessários são os seguintes:

  • gcc (recomendado, outros compiladores C podem funcionar)
  • make
  • flex
  • bison
  • m4
  • autoconf
  • automake
  • perl
  • gzip
  • tar
  • GNU sed

Além disso, você pode precisar instalar (e possivelmente compilar) qualquer software adicional específico para sua configuração, como o Oracle ou MySQL.

Usando Pacotes

Você pode simplificar o processo de instalação no Solaris usando pkgadd para instalar a maioria dos componentes necessários.



Notas de Instalação para o Debian GNU/Linux

Essa seção contem notas e dicas específicas para a instalação do PHP no » Debian GNU/Linux.

Usando APT

Embora você possa apenas baixar o fonte do PHP e compilar por conta própria, usar o sistema de pacotes do Debian e o método mais simples e mais limpo de instalar o PHP. Se você não está familiarizado com compilar software no Linux, essa é maneira de se instalar.

A primeira decisão que você precisa fazer é se você quer instalar o Apache 1.3.x ou o Apache 2.x. Os pacotes correspondentes do PHP são, respectivamente, libapache-mod-php* e libapache2-mod-php*. Os passos abaixo usarão o Apache 1.3.x. Por favor, perceba que, até o fechamento desse documento, não há nenhum pacote oficial do Debian para o PHP 5. Então, o procedimento instalará o PHP4.

O PHP está disponível no Debian como CGI ou CLI também, pelos pacotes php4-cgi e php4-cli. Se você precisar deles, só terá que reproduzia os passos a seguir com o pacote desejado. Outro pacote especial que você pode querer instalar é o php4-pear. Ele contem um instalação PEAR mínima e a ferramenta de linha de comando pear.

Se você precisa de pacotes do PHP mais recentes que os do Debian stable ou se alguns módulos do PHP não se encontram no repositório oficial do Debian, talvez você deva procurar em » http://www.apt-get.org/. Um dos resultados encontrados deve ser » Dotdeb. Esse repositório não-oficial é mantido por » Guillaume Plessis e contem pacotes Debian das versões mais recentes do PHP 4 e 5. Para usá-lo, apenas adiciona as seguintes linhas ao seu arquivo /etc/apt/sources.lists e execute apt-get update :

Exemplo #1 Adicionando o repositório Dotdeb

deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all

A última coisa a ser considade é se sua lista de pacotes está atualizada. Se você não atualizou recentemente, você precisa executar apt-get update antes de qualquer coisa. Dessa forma, você estará usando a versão estável mais recente dos pacotes do Apache e do PHP.

Agora que está tudo no lugar, você pode usar o seguinte exemplo para instalar o Apache e o PHP:

Exemplo #2 Exemplo de Instalação no Debian com o Apache 1.3

# apt-get install libapache-mod-php4

O APT instalará o módulo do PHP 4 para o Apache 1.3 automaticamente, e todas as suas dependências e então ativá-lo. Se o programa não pedir para reiniciar o Apache durante a instalação, você terá que fazê-lo manualmente:

Exemplo #3 Parando e iniciando o Apache depois que o PHP estiver instalado

# /etc/init.d/apache stop
# /etc/init.d/apache start

Maior controle sobre a configuração

Na seção anterior, o PHP foi instalado apenas com os módulos principais. Isso pode não ser o que você quer e você discobrirá em breve que você precisa de mais módulos ativados, como MySQL, cURL, GD, etc.

Quando você compila o PHP do fonte, você precisa ativar os módulos através do comando configure. Com o APT, você só precisa instalar os pacotes adicionais. Todos eles tem o nome 'php4-*' (ou 'php5-*' se você instalou o PHP 5 de um repositório não-oficial).

Exemplo #4 Pegando a lista de pacotes adicionais do PHP

# dpkg -l 'php4-*'

Como você pode ver na saída do comando, existem vários módulos do PHP que você pode instalar (tirando os pacotes especiais php4-cgi, php4-cli ou php4-pear). Olhe com bastante atenção e escolha os que você precisar. Se você escolher um módulo e você não tiver as bibliotecas necessárias, o APT instalará todas as dependências automaticamente para você.

Se você escolher adicionar os módulos do MySQL, cURL e GD, o comando parecerá com esse:

Exemplo #5 Instalar o PHP com MySQL, cURL e GD

# apt-get install php4-mysql php4-curl php4-gd

O APT editará o seu arquivo php.ini (/etc/php4/apache/php.ini, /etc/php4/cgi/php.ini, etc) para dar suporte aos módulos novos.

Exemplo #6 Essas linhas ativam o MySQL, cURL e GD no PHP

extension=mysql.so
extension=curl.so
extension=gd.so

Você só terá que parar/iniciar o Apache como antes para ativar os módulos.

Problemas Comuns

  • Se você ver o código fonte do seus script ao invés do resultado que eles deveriam produzir, o APT provavelmente não incluiu /etc/apache/conf.d/php4 na configuração do Apache. Verifique se a linha está presente no arquivo /etc/apache/httpd.conf e então reinicie o Apache:

    Exemplo #7 Essa linha ativa o PHP 4 no Apache

    # Include /etc/apache/conf.d/
    
  • Se você instalou um módulo adicional e se as funções desse módulo não estiverem disponíveis nos scripts, verifique que a linha apropriada está presente no seu arquivo php.ini, como visto antes. O APT pode falhar durante a instalação de módulos adicionais, devido a uma configuração confusa do debconf.



Instalação no Mac OS X

Índice

Essa seção contem notas e dicas específicas para instalação do PHP no Mac OS X. Existem duas versões do Mac OS X um pouquinho diferentes entre si, Cliente e Servidor, nosso manual trata da instalação do PHP em ambos os sistemas. Note que o PHP não está disponível para MacOS 9 e versões anteriores.

Usando Pacotes

Existem algumas versões do PHP empacotadas e pré-compiladas para o Mac OS X. Isso pode ajudar na instalação de uma configuração padrão, mas se você precisar ter algumas características diferentes (como um servidor seguro, ou um driver de banco de dados diferente), você pode precisar compilar o PHP e/ou seu servidor web por conta própria. Se você não estiver familiarizado com o procedimento de compilar seu próprio software, vale a pena checar se alguém já fez um pacote do PHP com as características que você precisa.

Os seguintes recursos oferecem pacotes de fácil instalação e binários pré-compilados para usar o PHP no Mac OS:


Usando o pacote do PHP para Mac

PHP vem junto com Mac OS X desde a versão 10.0.0. Habilitar o PHP no servidor web padrão requer apenas descomentar algumas linhas no arquivo de configuração do Apache (httpd.conf) enquanto que a versão CGI e/ou CLI estão disponíveis automaticamente (facilmente acessíveis pelo programa Terminal).

Habilitar o PHP usando as instruções abaixo tem como objetivo configurar rapidamente um ambiente de desenvolvimento local. É altamente recomendado sempre atualizar o PHP para a versão mais nova. Como qualquer software ativo, novas versões são criadas para consertar bugs e adicionar funcionalidades e o PHP não é diferente. As seguintes instruções são direcionadas para iniciantes, os detalhes fornecidos permitem que uma configuração padrão funcionar. Todos os usuários são encorajados à compilar ou instalar uma versão nova do pacote.

O tipo de instalação padrão é usando mod_php, e habilitar o pacote mod_php no Mac OS X para o servidor Apache (o servidor web padrão, que é acessível via Preferências de Sistema) envolte os seguintes passos:

  1. Localize e abra o arquivo de configuração do Apache. Normalmente, ele está em: /etc/httpd/httpd.conf Usar Finder ou Spotlight para encontrar esse arquivo pode ser complicado, já que ele normalmente é privado e o dono é o administrador (root).

    Nota: Uma maneira de modificar o arquivo é usando um editor de texto baseado em Unix no Terminal, por exemplo nano, e, como o dono do arquivo é o root, nós usaremos o comando sudo para abrí-lo. Digite o seguinte comando na aplicação de Terminal (você precisará digitar a sua senha): sudo nano /etc/httpd/httpd.conf Comandos importantes do nano: ^w (busca), ^o (salvar), e ^x (sair) onde ^ representa a tecla Ctrl.

  2. Com um editor de texto, descomente as linhas (removendo os #) que parecem com as linhas abaixo (essas duas linhas normalmente não estão juntas, localize ambas no arquivo):

    # LoadModule php4_module libexec/httpd/libphp4.so
    
    # AddModule mod_php4.c
    
    Perceba a localização/caminho. Quando compilar o PHP no futuro, os arquivos acima devem ser substituidos ou comentados.

  3. Certifique-se que as extensões desejadas serão avalidadas como códigos PHP (exemplos: .php .html e .inc)

    Como a seguinte instrução já existe no httpd.conf (a partir do Mac Panther), uma vez que o PHP for habilitado, os arquivos .php serão automaticamente avaliados como códigos PHP.

    <IfModule mod_php4.c>
        # If php is turned on, we respect .php and .phps files.
        AddType application/x-httpd-php .php
        AddType application/x-httpd-php-source .phps
    
        # Since most users will want index.php to work we
        # also automatically enable index.php
        <IfModule mod_dir.c>
            DirectoryIndex index.html index.php
        </IfModule>
    </IfModule>
    

  4. Assegure-se de que a diretiva DirectoryIndex carrega o arquivo index desejado Isso também é configurável no arquivo httpd.conf. Tipicamente index.php e index.html são usados. Por padrão,