O Apache é um servidor web, então ele basicamente faz o que os servidores web estão lá: você (ou seu navegador) pede um arquivo, e ele envia aquele arquivo para você. O Apache por si só não "sabe" que esse arquivo contém código que você queria que fosse executado de antemão.
O PHP é executado pelo interpretador PHP. Você parecia ter instalado esse interpretador, mas precisa integrá-lo ao Apache. O ciclo de vida de um script PHP basicamente se parece com isso (um pouco antromorfizado, mas é mais fácil obter a essência dessa maneira)
- Um cliente solicita um arquivo com o final
.php
. - O Apache sabe que tais arquivos precisam ser entregues ao interpretador PHP. Então faz isso.
- O interpretador PHP executa o código PHP e gera a saída, que é devolvida ao Apache.
- O Apache envia essa saída para o cliente.
Na sua configuração atual, o Apache não "sabe" que .php
arquivos são especiais ou como lidar com eles. Então, ele faz exatamente como faria com qualquer outro arquivo e envia o arquivo como está.
Existem várias maneiras de integrar o interpter PHP com o Apache. Você pode usar o módulo do Apache mod_php
, você pode usar a interface de gateway comum cgi
ou suas versões mais recentes, como fcgi
ou php-fpm
. Eles diferem em aspectos como
- como é fácil configurar
- qual desempenho eles oferecem
- quão extensivamente você pode configurá-los
- quão bem você pode proteger sua configuração
Se você quer apenas um servidor para brincar e experimentar, deve ser suficiente usar mod_php
simplesmente instalando o pacote libapache2-mod-php
e reiniciando o Apache. Mas o SAPI (API do servidor) é bastante ruim em relação ao desempenho, quase sem opções de configuração e não muito seguro (principalmente porque, por padrão, todo processo PHP é executado pelo mesmo usuário do sistema). Não seria uma boa ideia usar isso em produção ou em um servidor conectado à Internet (o que significa que todo mundo, de Oslo a Timbuktu, pode se dedicar a isso).
Mais duas coisas: o Ubuntu 16.04 vem com o PHP 7. As funções antigas do mysql como as que você está usando, mysql_connect
, mysql_query
, mysql_fetch_assoc
e assim por diante, foram preteridas desde o PHP 5.0 (significado desde doze anos atrás ). No PHP 7 eles foram removidos, então você não pode mais usá-los. Você deve usar os módulos mysqli ou pdo. Tutoriais sobre esses são fáceis de encontrar.
E, em segundo lugar, o pacote php
contém o interpretador básico. Muitos módulos adicionais são empacotados em seus próprios pacotes, como php-mysql
que você já instalou. Se você quiser usá-los, você precisa instalar o respectivo pacote.