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.

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

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.


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.