
WordPress pedindo senha do FTP em localhost no Linux
E ae galera! Tudo bem?
Essa vai ser uma dica rápida, mas daquelas que salvam vidas.
Linux: amor e ódio
Quem nunca se complicou com questões de permissões e dono de pasta no Linux não teve infância. Sério… é algo tipo assistir ao Chaves: você fica puto com o Seu Madruga apanhar toda hora inocentemente, mas é impossível não gostar.
Então antes de começar vou deixar links para estudo dos comandos para mudança de usuário e permissões.
O problema
O problema (como o título sugere) é o fato de o WordPress ficar solicitando as credenciais de FTP para instalar plugins e temas. Na maioria dos casos, o problema pode ser resolvido como a documentação (e o A.Torres lá nos comentários) sugerem: usando a constante FS_METHOD.
Mas as vezes isso não resolve ou então você não consegue manualmente alterar arquivos (o que é chato, já que você está desenvolvendo). Isso ocorre (dentre outros motivos) porque o usuário do seu servidor localhost (Xampp, Mamp, Lamp, EasyPHP, etc) não é o dono da pasta.
Solução e mais problemas
Com uma pesquisa rápida no Tio Google você encontra a solução de mudar o dono da pasta do site (no momento deve estar “root” ou “seu-usuario”):
$ sudo chown -R www-data pasta-do-site $ sudo chmod -R g+w pasta-do-site
A primeira linha altera recursivamente o dono da pasta para “www-data” (geralmente esse é o usuário atribuído ao seu localhost, se não for, troque o nome) e a segunda linha torna isso verdade para as novas subpastas, caso crie alguma.
O problema dessa solução é que muito provavelmente você não poderá mais criar ou alterar manualmente pastas e arquivos (através da interface gráfica, por exemplo).
Solução definitiva: alterar o usuário do localhost
A forma que encontrei pra dar permissão ao “locahost” alterar os arquivos e não impedir que eu também possa fazer isso foi atribuir meu usuário ao localhost. Ou seja, troquei “www-data” por “meu-usuario”.
Para fazer isso, você vai até o arquivo de configurações do seu servidor local (aqui no meu caso foi /etc/apache2/apache2.conf) e altera as seguintes linhas (trocando “www-data” pelo nome do seu usuário):
User www-data Group www-data
Maaaaaaaas… pode acontecer como aconteceu comigo e no lugar de “www-data” ter uma variável. Nesse caso, deve vir comentado acima a origem desses valores. Como você pode ver no exemplo:
# These need to be set in /etc/apache2/envvars User ${APACHE_RUN_USER} Group ${APACHE_RUN_GROUP}
Nesse caso, você vai lá e altera. Aqui ficou assim:
export APACHE_RUN_USER=neo export APACHE_RUN_GROUP=www-data
Lembre-se que sudo é necessário para alterar esses arquivos.