Eu estava montando um site WordPress e me deparei com um sintoma de que eu conseguia acessá-lo normalmente imediatamente após a instalação, mas quando entrei na página de login, a tela ficou em branco e eu não consegui fazer login, então pensei em deixar um memorando explicando como resolver isso.
O estudo de caso acima foi publicado no Codex, mas não havia causa ou solução correspondente, então verifiquei os registros de erros.
[code light="true"] PHP Erro fatal: Chamada para a função indefinida get_option() em /var/www/html/wp-admin/admin.php na linha 32, referente: http://***/wp-login.php[/code]. O erro diz que a função get_option não está definida no corpo principal admin.php da tela de administração. Aliás, a versão do WordPress que instalei é a 3.4.1 (a mais recente em 29 de agosto de 2012).
Desta vez, quando verifiquei a função no site do manual, descobri que get_option() está definido em wp-includes/functions.php. Então, ao seguir a fonte de wp-admin/admin.php, descobri que wp-load.php era obrige_once na linha 30. Em wp-load.php, load.php era _once require\ na linha 48, seguida por wp_load_translations_early() era chamado.
Na função de wp_load_translations_early definido na linha 668 de load.php, o functions.php correspondente é o requerido_once, então é possível que tenha sido retornado antes disso incluir o processamento... Eu investiguei.
No entanto, por mais que eu tente variar _dump variáveis, não entendo... Hmm, estou encrencado.
──Então, quando procurei na internet para ver se havia sintomas parecidos, encontrei.
A versão original em inglês do fórum do WordPress tinha uma solução para pessoas viciadas no mesmo erro.
Bem, se eu tivesse procurado isso online desde o começo, não teria tido dificuldade...
wordpress.org/support/topic/wp-301-apc-314-php-533-white-wp-adnmin-page
Parece que um acelerador PHP chamado APC (Alternative PHP Cache) está indo mal.
O próprio APC é um módulo acelerador que armazena em cache arquivos PHP compilados para fazer o PHP rodar mais rápido, e parece ser tão bom que há uma diferença na velocidade percebida mesmo no estado padrão de instalação. Em primeiro lugar, parece que o problema não é que o APC é ruim, mas sim que as configurações do APC não são otimizadas para WordPress.
Então, quando verifiquei o servidor de compilação (CentOS 5), o APC realmente estava instalado. Para verificar as informações do APC,
[code lang="shell" light="true"]ln -s /usr/share/pear/apc.php /var/www/html/apc.php[/code] ... Se você criar um link simbólico na raiz do documento e acessá-lo, a versão APC é 3.1.9 (aliás, a versão PHP é 5.3.16).
**Agora, aqui estão os passos para resolver isso. **
- Primeiro, abra o arquivo de configuração do APC (/etc/php.d/apc.ini) e desative a configuração apc.include_once_override.
[code lang="php" light="true"]apc.include_once_override=0[/code] - Se o arquivo de configuração acima não estiver em php.d,
[code lang="shell" light="true"]echo "extension=apc.so" > /etc/php.d/apc.ini[/code] e adicione a configuração em 1. - Reinicie o Apache.
[code lang="shell" light="true"]apachectl gracioso[/código] ou [code lang="shell" light="true"]serviço httpd reiniciar[/código]
Agora você pode fazer login com sucesso no administrador do WordPress.
O comportamento do WordPress varia dependendo do ambiente onde está instalado... Foi um estudo de caso que me fez sentir novamente.
Se você se encontrar em uma situação parecida da próxima vez, deve primeiro verificar o status de instalação do APC...