Colocando o Apache para funcionar no Mac OS X 10.10 (Yosemite)

Não vou tecer aqui as minhas reclamações a respeito do novo sistema do Mac. Não estou me entendendo muito bem com ele, espero que seja questão de tempo.

Uma coisa que mudou e me deu trabalho foi o Apache. No Mavericks, o Apache era o 2.2. No Yosemite, eles agora usam o 2.4. Se você usava o Apache no Mavericks, vai ver que ele logo de cara não funciona no Yosemite.

Vamos aos passos que resolveram o meu problema. Talvez resolvam o seu também. Estou supondo que você use o Apache com o PHP na pasta /Library/WebServer/Documents/.

Edite o arquivo /etc/apache2/httpd.conf (você vai reparar que ele salvou uma cópia do seu httpd.conf como httpd.conf.pre-update. Suas configurações antigas estão lá).

sudo vi httpd.conf

Comente a linha “Require all denied” do diretório “/”.

AllowOverride none
# Require all denied

Descomente a linha que carrega o PHP.

LoadModule php5_module libexec/apache2/libphp5.so

Caso você não esteja usando o apache na pasta /Library/WebServer/Documents/, talvez seja útil adicionar o usuário _www aos grupos admin, staff e wheel, usando os comandos abaixo no terminal.

sudo dseditgroup -o edit -a _www -t user admin
sudo dseditgroup -o edit -a _www -t user wheel
sudo dseditgroup -o edit -a _www -t user staff

Pronto. Reinicie o apache que tudo deve funcionar agora.

sudo apachectl restart

WordPress 3 – Resolvendo o wp-admin em branco

Hoje perdi um bom tempo com um problema no WordPress de um outro blog que eu mantenho, que foi resolvido com uma mísera linha de configuração do PHP. Eu vi outras pessoas reclamando do mesmo problema, sem resposta. Só depois de procurar muito foi que encontrei a solução do problema aqui.

Depois que eu atualizei o WordPress desse outro blog para a versão 3.0.1, não consegui mais escrever nenhum post nem atualizar nenhum plugin. A atualização dos plugins gerava um erro no arquivo de log do apache assim:

PHP Fatal error:  Trying to clone an uncloneable object of class ZipArchive

e também assim: (substituí o IP por XXX.XXX.XXX.XXX)

[error] [client XXX.XXX.XXX.XXX] ALERT - canary mismatch on efree() - heap overflow 
detected (attacker 'XXX.XXX.XXX.XXX', file 'wp-admin/includes/template.php', line
 3549), referer: wp-admin/plugins.php?deactivate-multi=true&plugin_status=all&
paged=1

A página de novo post mostrava um erro semelhante a esse acima.

Tentei de tudo! Desativei todos os plugins, reinstalei o WordPress do zero, atualizei o PHP, Apache, MySQL, e tudo mais, apaguei a pasta de plugins… Nada. Até que achei a tal página lá de cima que me deu a resposta para o problema.

A solução foi desligar a configuração de compatibilidade com o PHP 4.X no arquivo php.ini e reiniciar o apache. Assim:

; Enable compatibility mode with Zend Engine 1 (PHP 4.x)
zend.ze1_compatibility_mode = Off

Depois de mudar essa configuração no seu php.ini, não se esqueça de reiniciar o seu apache.

Atualização: Depois de escrever esse post, vi na home do WP-Admin a seguinte notícia:

“Our approach with WordPress has always been to make it run on common server configurations. We want users to have flexibility when choosing a host for their precious content. Because of this strategy, WordPress runs pretty much anywhere. Web hosting platforms, however, change over time, and we occasionally are able to reevaluate some of the requirements for running WordPress. Now is one of those times. You probably guessed it from the title — we’re finally ready to announce the end of support for PHP 4 and MySQL 4!”

Ah se eu tivesse lido isso antes…