Instalei um blog WordPress no meu sistema local. Mas quando tento adicionar plug-ins do administrador, ele pede acesso ao FTP. O que preciso configurar para que o WordPress possa fazer upload sem FTP?
Instalei um blog WordPress no meu sistema local. Mas quando tento adicionar plug-ins do administrador, ele pede acesso ao FTP. O que preciso configurar para que o WordPress possa fazer upload sem FTP?
Respostas:
Tente adicionar o código em wp-config.php:
define('FS_METHOD', 'direct');
FS_METHOD
é a abreviação de FILESYSTEM_METHOD
. Quando você está definindo para direct
modificar rapidamente os arquivos - também conhecido como não usando FTP, então você está forçando o WordPress a tentar alterar os arquivos no site diretamente.
Se você estiver usando o Ubuntu.
sudo chown -R www-data:www-data PATH_TO_YOUR_WORDPRESS_FOLDER
www-data
veja aqui: codex.wordpress.org/Hardening_WordPress ou aqui: stackoverflow.com/questions/18352682/…
"Sempre que você usa o painel de controle do WordPress para instalar, atualizar ou excluir plug-ins automaticamente, o WordPress deve fazer alterações nos arquivos do sistema de arquivos.
Antes de fazer qualquer alteração, o WordPress primeiro verifica se tem ou não acesso para manipular diretamente o sistema de arquivos.
Se o WordPress não tiver as permissões necessárias para modificar o sistema de arquivos diretamente, você será solicitado a fornecer credenciais de FTP para que o WordPress possa tentar fazer o que for necessário via FTP. "
Solução: para descobrir com qual usuário sua instância do apache está sendo executada, crie um script de teste com o seguinte conteúdo:
<?php echo(exec("whoami")); ?>
Para mim, era daemon e não www-data. Em seguida, corrija a permissão:
sudo chown -R daemon /path/to/your/local/www/folder
<?php echo(exec("id")); ?>
que fornecerá dados de grupo além do ID do usuário:uid=5018(web27) gid=5012(client7) groups=5012(client7),5002(sshusers)
whoami
então veja as mesmas informações:sudo chown -R `whoami` /path/to/your/local/www/folder
No OSX, usei o seguinte e funcionou:
sudo chown -R _www:_www {path to wordpress folder}
_www é o usuário sob o qual o PHP é executado no Mac.
(Você também pode precisar fazer o chmod em algumas pastas também. Eu tinha feito isso primeiro e não foi corrigido. Não foi até que eu executei o comando chown que funcionou, então não tenho certeza se era o comando chown sozinho ou uma combinação de chmod e chown.)
Mudei a propriedade da pasta wordpress para www-data recursivamente e reiniciei o apache.
sudo chown -R www-data:www-data <folderpath>
Funcionou como um encanto!
Desde o primeiro hit no Google :
O WordPress pede suas credenciais de FTP quando não consegue acessar os arquivos diretamente. Isso geralmente é causado pelo PHP rodando como o usuário apache (mod_php ou CGI) ao invés do usuário que possui seus arquivos WordPress.
Isso é bastante normal na maioria dos ambientes de hospedagem compartilhada - os arquivos são armazenados como o usuário e o Apache é executado como usuário apache
ou httpd
. Esta é, na verdade, uma boa precaução de segurança para que exploits e hacks não possam modificar os arquivos hospedados. Você poderia contornar isso definindo todos os arquivos WP com segurança 777, mas isso significa nenhuma segurança, então eu não aconselharia fortemente contra isso. Basta usar o FTP, é a solução alternativa recomendada automaticamente por um bom motivo.
Primeiro vá para a pasta de instalação (por exemplo)
cd /Applications/XAMPP/xamppfiles/
Agora vamos modificar seu diretório htdocs:
sudo chown -R daemon htdocs
Digite sua senha root quando solicitado e termine-a com uma chamada chmod:
sudo chmod -R g+w htdocs
Fiz uma instalação local do WordPress no Ubuntu 14.04 seguindo as etapas descritas aqui e simplesmente executando:
sudo chown -R www-data:www-data {path_to_your_project_directory}
resolveu meu problema com o download de plug-ins. Só estou deixando este post aqui porque, quando pesquisei meu problema no Google, esse foi um dos primeiros resultados e me levou à solução do meu problema.
Espero que este ajude alguém!
Tivemos o mesmo problema como parte de um problema maior. A solução sugerida de
define('FS_METHOD', 'direct');
esconde aquela janela, mas ainda tínhamos problemas com o carregamento de temas e atualizações, etc. Está relacionado às permissões, no entanto, em nosso caso, corrigimos o problema mudando do fornecedor de sistema operacional php mod_php para o aplicativo FastCGI de fornecedor de sistema operacional php mais seguro .
Se durante a instalação de um plugin, o Wordpress pede seu hostname ou detalhes de FTP. Em seguida, siga estas etapas:
Faça login em seu servidor e navegue para / var / www / html / wordpress / . Abra wp-config.php e adicione esta linha após definir ('DB_COLLATE')
define('FS_METHOD', 'direct');
Se obtiver o erro "Não foi possível criar o diretório". Dê permissões de gravação para o seu diretório wordpress recursivo como
chmod -R go+w wordpress
NOTA. Por segurança, revogue essas permissões depois de instalar um plugin como
chmod -R go-w wordpress
A maneira mais fácil de resolver este problema é adicionar as seguintes informações de FTP ao seu wp-config.php
define('FS_METHOD', 'direct');
define('FTP_BASE', '/usr/home/username/public_html/my-site.example.com/wordpress/');
define('FTP_CONTENT_DIR', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/');
define('FTP_PLUGIN_DIR ', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/plugins/');
FTP_BASE é o caminho completo para a pasta "base" (ABSPATH) da instalação do WordPress. FTP_CONTENT_DIR é o caminho completo para a pasta wp-content da instalação do WordPress. FTP_PLUGIN_DIR é o caminho completo para a pasta de plug-ins da instalação do WordPress.
Conforme mencionado por Niels, isso ocorre porque o usuário do processo servidor não consegue escrever na pasta do Wordpress.
Mas aqui está o que muitos artigos não explicam. É o proprietário do processo php, não o processo nginx. Se você tentar alterar o proprietário do nginx, isso não resolverá.
Para resolver isso, tente ps aux
ver qual usuário possui o processo php-fpm. Em seguida, verifique se o usuário é o mesmo usuário que o proprietário da pasta wordpress, ou pode pelo menos escrever nela. Se o usuário não puder escrever nele, você precisará alterar as permissões e / ou propriedade da pasta; ou coloque os dois usuários (proprietário do servidor e proprietário da pasta do wordpress) em um grupo comum que pode gravar na pasta; ou mude a propriedade "usuário" do php.ini para um usuário que possa gravar na pasta.
Há muitas respostas semelhantes a essa pergunta, mas nenhuma delas aborda totalmente a causa raiz. O comentário de Sebastian Schmid no post original toca nele, mas não totalmente. Esta é minha opinião a partir de 06/11/2018:
Causa raiz
Quando você tenta carregar um plugin por meio da interface de administração do WordPress, o WordPress fará uma chamada para uma função chamada "get_filesystem_method ()" (ref: /wp-admin/includes/file.php:1549 ). Esta rotina tentará gravar um arquivo no local em questão (neste caso, o diretório do plugin). É claro que pode falhar aqui imediatamente se as permissões do arquivo não estiverem configuradas corretamente para permitir que o usuário do WordPress (pense na identidade do usuário executando o php) para gravar o arquivo no local em questão.
Se o arquivo puder ser criado, esta função detecta o proprietário do arquivo temporário, junto com o proprietário do arquivo atual da função (ref: /wp-admin/includes/file.php:1572 ) e compara os dois. Se eles corresponderem, nas palavras do WordPress, "WordPress está criando arquivos com o mesmo proprietário dos arquivos WordPress, isso significa que é seguro modificar e criar novos arquivos via PHP" e seu plug-in foi carregado com êxito sem o prompt de credenciais de FTP. Se eles não corresponderem, você receberá o prompt FTP Credentials.
Conserta
Certifique-se de que a identidade que está executando o seu processo php é o proprietário do arquivo para:
a) Todos os arquivos do aplicativo WordPress ou ...
b) No mínimo o arquivo /wp-admin/includes/file.php
Comentários finais
Não estou muito interessado em aplicar especificamente a propriedade do arquivo ao file.php para contornar esse problema (parece um pouco maluco, para dizer o mínimo!). Parece-me, neste ponto, que a base de código do WordPress está se inclinando para que executemos o processo PHP sob o mesmo usuário principal que o proprietário do arquivo para os arquivos do aplicativo WordPress. Eu gostaria de receber alguns comentários da comunidade sobre isso.