PHP não funciona no Apache2 após a atualização do sistema

14

Atualizei recentemente meu sistema de Karmic para Lucid. Isso envolveu a atualização do Apache e PHP, acredito.

Agora, meu servidor não consegue lidar com arquivos PHP; qualquer navegação para eles está provocando o download, em vez de analisar.

O módulo PHP ainda está carregado no Apache mods-enabled e eu tenho AddType application/x-httpd-php .phpno meu httpd.conf.

Não há mensagens significativas no acesso ao Apache ou nos logs de erros, por isso estou perplexo.

Qualquer ajuda seria apreciada. Obrigado.

Jivings
fonte

Respostas:

17

/var/log/apache2/error.log deve mostrar uma linha como a abaixo se o PHP foi carregado com êxito:

[Terça-feira, 30 de agosto 12:53:36 2011] [aviso] Apache / 2.2.14 (Ubuntu) PHP / 5.3.2-1ubuntu4.9 com Suhosin-Patch configurado - retomando as operações normais

Preste atenção à data, se for algo de 2009, você configurou algo errado.

AddType é inútil, você precisa usar:

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>

Veja também as instruções de instalação no php.net para Apache 2.x .

Você não precisa adicionar isso manualmente, as libapache2-mod-php5instalações do pacote /etc/apache2/mods-available/php5.confcontendo:

<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
    </FilesMatch>
    # To re-enable php in user directories comment the following lines
    # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
    <IfModule mod_userdir.c>
        <Directory /home/*/public_html>
            php_admin_value engine Off
        </Directory>
    </IfModule>
</IfModule>

Como é um conffile, é possível que não esteja instalado com a atualização. Para corrigir isso, limpe -o e instale-o novamente:

sudo apt-get purge libapache2-mod-php5
sudo apt-get install libapache2-mod-php5

Para habilitar o PHP, você deve executar:

sudo a2enmod php5

Reinicie o servidor da web depois de:

sudo /etc/init.d/apache2 restart

Outras coisas a fazer:

  • verifique se há configurações conflitantes em /etc/apache2.
  • você construiu o Apache a partir da fonte?
  • Execute sudo apache2ctl configtestpara verificar sua configuração quanto a erros de sintaxe
  • Abra http: // localhost / server-info para verificar a configuração e os módulos carregados. O statusmódulo deve ser carregado para isso. Se você estiver executando um servidor remoto, precisará se adicionar à Allow fromlista /etc/apache2/mods-enabled/status.confe reiniciar o servidor posteriormente
Lekensteyn
fonte
Brilhante. AFK agora, mas testará isso esta noite. Obrigado.
Jivings
Removido e reinstalado, o módulo é carregado no mods-enabled, mas ainda estou tendo o mesmo problema ... Não consigo encontrar nada que possa estar em conflito e a inclusão dos arquivos conf está definitivamente presente no apache.conf. Você tem outras idéias? Obrigado.
Jivings
@Jivings: algumas idéias de depuração acrescentou
Lekensteyn
Ainda incapaz de descobrir. No entanto, descobri algo ainda mais curioso. Parece que o PHP está funcionando bem para um dos hosts virtuais configurados, apesar de tudo o que faz é definir um documentRoot em / var / www. Como isso é possível?!
Jivings
1
Você ainda precisará liberar o cache do navegador e reiniciar o apache.
Francesco
3

Bem, depois que nada mais funcionou e o Apache estava ficando muito confuso, finalmente limpei todos os pacotes do Apache e os reinstalei.

Parece estar funcionando bem agora, quem sabe o que havia de errado com isso ...

EDITAR

Descobri o que estava errado quando estava definindo minhas definições de Apache novamente. [Esta entrada do blog] [1] explica isso.

Acontece que, embora o módulo userdir não esteja sendo usado ativamente, o restante dos arquivos dos sites residem na minha pasta ~ / public_html e o php estava sendo desativado para tudo o que havia lá.

Eu acho que isso deve ter sido uma adição recente ao módulo php que não estava presente nas minhas configurações do Karmic.

Jivings
fonte
1
Isso deve estar relacionado a um problema de configuração. Em upgrades, há arquivos em /etcsão copiados afaik (pelo menos, alguém teve um problema com /etc/init.d/apache2não ser criado na reinstalação, apenas na purga + instalar)
Lekensteyn
Estranho que ele trabalhou antes de meu sistema atualizar então ...
Jivings
provavelmente uma mudança de recurso então. Você não pode esperar que toda atualização respeite as configurações antigas. Algumas modificações fariam sentido para a maioria, mas não para outras.
Lekensteyn
De fato. Obrigado por me ajudar a chegar ao fundo de qualquer maneira, muito apreciada :)
Jivings
1

o php5.confarquivo /etc/apache2/mods-enabledtem algumas linhas na parte inferior que impedem a execução do php dentro de um diretório de usuários; portanto, dependendo da sua configuração, esse também pode ser o seu problema. Você pode comentar essas linhas e recarregar o apache2

Jeff
fonte