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

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

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

O problema é que, emboraA hospedagem virtual está funcionando por si só, o PHP não.

Configuração do servidor:

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

Etapas tomadas:

Efetuando login comoraizdo utilizador,

  • Instalando Apache e 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 host virtual

Como abaixo,

mkdir -p /srv/www/example.org/public_html
mkdir -p /srv/www/example.org/logs
  • Colocando um .phpe .htmlarquivos de teste como abaixo:

Arquivos em /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 aponto meu navegador para index.html, ele funciona. Mas quando euaponte meu navegador para index.phprecebo uma página em branco.

Solução de problemas

(Coisas que já fiz/verifiquei sem sorte)

  • Garantido que o Apache esteja em execução e DocumentRootacessível
  • Todos os diretórios são 755e arquivos644
  • Log de acesso do Apache verificado. As solicitações de página HTML estão lá com código de status 200, mas nenhuma .phpsolicitação de página presente no log de acesso
  • Nenhum erro no log de erros do Apache ou PHP, nenhum erro no/var/log/messages
  • Tentei adicionar php_admin_flag engine ono arquivo de configuração do vhost

Veja também abaixo o conteúdo do/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

Responder1

Na minha experiência, o PHP renderiza uma página em branco quando encontra um erro grave subjacente. Geralmente é fácil de consertar, mas infelizmente nada é 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 produzir uma mensagem de erro que ajudará no processo de solução de problemas.

Responder2

A primeira coisa que você deve fazer é verificar os logs de erros do Apache que você definiu na 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 no Apache, portanto, quaisquer erros que aparecerem aparecerão nos logs do servidor. Eu recomendo fazer login no servidor e usar tailassim:

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

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

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

Independentemente de para onde os logs estão sendo enviados, essa será a chave para o que está acontecendo – ou não – com PHP e Apache em seu servidor.

informação relacionada