Não é possível fazer o PHP funcionar no ambiente do Apache VirtualHosting

1

Tentando configurar um ambiente Apache VirtualHosting com PHP em um nó CentOS recém-criado no servidor de nuvem DigitalOcean.

O problema é que, embora o Virtual hosting esteja funcionando, o PHP não é .

Configuração do servidor:

  • Servidor Web: CentOS 6.5 com Apache / 2.2.15
  • Versão do PHP: 5.3.3 (Para ser usado como um módulo do Apache)

Etapas:

Efetuando login como usuário raiz ,

  • Instalando o Apache e o php: yum -y install httpd php
  • Criando um novo arquivo de configuração de host virtual, como abaixo:

Arquivo: /etc/httpd/conf.d/vhosts.conf

NameVirtualHost *:80
<VirtualHost *:80>
     ServerAdmin [email protected]
     ServerName example.org
     ServerAlias www.example.org
     DocumentRoot /srv/www/example.org/public_html/
     ErrorLog /srv/www/example.org/logs/error.log
     CustomLog /srv/www/example.org/logs/access.log combined
</VirtualHost>
  • Criando novos diretórios para o site do host virtual

Como abaixo,

mkdir -p /srv/www/example.org/public_html
mkdir -p /srv/www/example.org/logs
  • Colocando os arquivos de teste .php e .html , como abaixo:

Arquivos sob /srv/www/example.org/public_html/ (DocumentRoot)

echo "<HTML>It work's</HTML>"      > /srv/www/example.org/public_html/index.html
echo "<?php echo ("It works"); ?>" > /srv/www/example.org/public_html/index.php

Em seguida, quando eu aponto meu navegador para index.html , ele funciona. Mas quando eu aponto meu navegador para index.php , obtenho uma página em branco .

Solução de problemas

(coisas que eu já fiz / verifiquei sem sorte)

  • Assegure-se de que o Apache esteja em execução e DocumentRoot esteja acessível
  • Todos os diretórios são 755 e arquivos 644
  • Log de acesso do Apache verificado. As solicitações de página html estão lá com 200 códigos de status, mas nenhuma solicitação de página .php está presente no log de acesso
  • Nenhum erro no log de erros do Apache ou do PHP, nenhum erro em /var/log/messages
  • Tentei adicionar php_admin_flag engine on no arquivo de configuração do vhost

Veja também abaixo o conteúdo de /etc/httpd/conf.d/php.conf

<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>
AddHandler php5-script .php
AddType text/html .php
DirectoryIndex index.php
    
por hashbrown 14.01.2014 / 07:52

2 respostas

1

Na minha experiência, o PHP renderiza uma página em branco quando encontra um erro subjacente grave. Geralmente é fácil de corrigir, mas infelizmente nada é normalmente registrado nos logs do Apache, logs do PHP ou syslog, dificultando o processo de solução de problemas.

Encontre seu arquivo de configuração php.ini usando:

php -i | grep "php.ini"

Isso deve produzir algo assim:

Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

Edite este arquivo de configuração (/etc/php.ini neste caso) com seu editor de texto favorito e certifique-se de que a exibição de erros e erros de inicialização esteja ativada. As entradas devem ficar assim:

display_errors = On
display_startup_errors = On

Por fim, reinicie o Apache para que ele leia a nova configuração do PHP e acesse sua página via curl ou navegador. Isso deve gerar uma mensagem de erro que ajudará no processo de solução de problemas.

    
por 07.05.2014 / 14:41
0

A primeira coisa que você deve fazer é verificar os logs de erro do Apache que você definiu em sua configuração do Apache; copiado abaixo:

NameVirtualHost *:80
<VirtualHost *:80>
     ServerAdmin [email protected]
     ServerName example.org
     ServerAlias www.example.org
     DocumentRoot /srv/www/example.org/public_html/
     ErrorLog /srv/www/example.org/logs/error.log
     CustomLog /srv/www/example.org/logs/access.log combined
</VirtualHost>

O PHP é executado sob o Apache para que qualquer erro que apareça seja exibido nos registros do servidor. Recomendo fazer login no servidor & usando tail da seguinte forma:

tail -f -n 200 /srv/www/example.org/logs/error.log

Mas esse é o log geral do Apache para você? Ou é a configuração do DigitalOcean? Porque esse caminho de /srv/www/example.org/logs/ parece bastante estranho. No Linux padrão, seria em um local como este:

tail -f -n 200 /var/log/apache2/error.log

Independentemente de onde os logs realmente estão sendo enviados, isso será a chave para o que está acontecendo - ou não está acontecendo - com PHP & Apache no seu servidor.

    
por 07.05.2014 / 14:55