PHP não está executando scripts, fazendo o download deles

2

Eu sei, um problema muito típico, mas fiquei sem ideias. Sim, o módulo está instalado:

# aptitude search libapache2-mod-php5
i   libapache2-mod-php5                                                         - server-side, HTML-embedded scripting language (Apache 2 module)                       
p   libapache2-mod-php5filter                                                   - server-side, HTML-embedded scripting language (apache 2 filter module)

e ativado:

# ls -l /etc/apache2/mods-enabled/php*
lrwxrwxrwx 1 root root 27 2011-08-31 13:49 /etc/apache2/mods-enabled/php5.conf -> ../mods-available/php5.conf
lrwxrwxrwx 1 root root 27 2011-08-31 13:49 /etc/apache2/mods-enabled/php5.load -> ../mods-available/php5.load

# cat /etc/apache2/mods-enabled/php5.conf
<IfModule mod_php5.c>
  AddType application/x-httpd-php .php .phtml .php3 .php5
  AddType application/x-httpd-php-source .phps
</IfModule>

# cat /etc/apache2/mods-enabled/php5.load
LoadModule php5_module /usr/lib/apache2/modules/libphp5.so

Apache afirma que o PHP é lodade:

# apache2ctl -t -D DUMP_MODULES
Loaded Modules:
 core_module (static)
 log_config_module (static)
 logio_module (static)
 mpm_prefork_module (static)
 http_module (static)
 so_module (static)
 alias_module (shared)
 auth_basic_module (shared)
 authn_file_module (shared)
 authz_default_module (shared)
 authz_groupfile_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 cgi_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 mime_module (shared)
 negotiation_module (shared)
 php5_module (shared)
 proxy_module (shared)
 proxy_html_module (shared)
 proxy_http_module (shared)
 rewrite_module (shared)
 setenvif_module (shared)
 status_module (shared)
Syntax OK

Não há .htaccess no document root e o 404 mostra o PHP como presente:

Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny13 with Suhosin-Patch proxy_html/3.0.0 Server at wiki.example.com Port 80

Os registros não mostram erros.

Alguma ideia do que mais deve verificar?

    
por pupeno 31.08.2011 / 16:02

4 respostas

0

Primeiro, verifique se a configuração do seu apache está carregando, por exemplo:

LoadModule php5_module modules/libphp5.so

Depois, certifique-se de que o Apache saiba interpretar arquivos .php, por exemplo

AddType text/html .php
AddType application/x-httpd-php .php

EDITAR

Você menciona que os logs de erros não contêm erros. Qual é o código de status das solicitações para os scripts .php? (200, 500, etc)

No seu arquivo php.ini, verifique as configurações de log_errors , display_errors e error_log . Se houver erros no log, eles estarão no local especificado por error_log . Eu acho que este é o comportamento padrão (log, não exibindo a tela).

Se seu aplicativo precisar do MySQL, certifique-se de ter instalado o pacote php5-mysql também. O mesmo para qualquer outro módulo necessário.

    
por 31.08.2011 / 16:10
1

Você não pode ter o PHP e o Passenger no mesmo local e ao mesmo tempo usando os módulos do manipulador (cada solicitação é apenas "tratada" uma vez e, nesse caso, o Passenger está manipulando a solicitação). Se você deve servir PHP a partir do seu aplicativo rails por algum motivo, você precisa criar um local ou diretório específico e desabilita o Passenger nesse local da seguinte forma:

<Directory /var/www/php/goes/here>
   PassengerEnabled off
</Directory>

ou

<Location /php/goes/here>
   PassengerEnabled off
</Location>

Mais aqui nos documentos oficiais

Parece que desligar o PassengerEnabled não habilita o DirectoryIndex, então você pode precisar reescrever manualmente de ^ / php / goes / aqui / $ para /php/goes/here/index.php

Além disso, parece que o PassengerHighPerformance impede que você o desative .

Ou, mude para o libapache2-mod-php5filter e mexa com ele até o apache conseguir que ele seja executado como um filtro de saída depois que o passageiro manipular o pedido e gerar o código php.

    
por 31.08.2011 / 18:57
0

Não tenho certeza do que deu errado porque, como estava corrigindo as coisas, o Chrome continuou me mostrando um download do arquivo PHP. Ainda faz, enquanto outros navegadores mostram o PHP sendo executado. O Chrome está usando algum cache? De qualquer forma, desde que fiz a pergunta, a única parte que faltava era instalar o php5-mysql.

    
por 02.09.2011 / 09:18
-1

Consegui corrigir esse problema em um dos meus servidores.

Acontece que isso é causado pelo nome de arquivo "ruim" correspondente em algum lugar. Eu renomei o index.html padrão com "Isso funciona!" texto para index.html.bak. Não tem problema, certo? Acontece que o apache estava realmente servindo esse arquivo .bak em vez de index.php.

    
por 18.09.2014 / 21:50