WordPress pedindo minhas credenciais de FTP para instalar plug-ins

117

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?

sasi kanth
fonte

Respostas:

301

Tente adicionar o código em wp-config.php:

define('FS_METHOD', 'direct');
níquel
fonte
29
Eu continuo tropeçando nessa resposta enquanto procuro no Google, então eu posto uma nota aqui para mim e para outros: O código está em wp-admin / includes / file.php: get_filesystem_method. O Wordpress tenta criar um arquivo 'wp-content / temp-write-test -'. Time (). Se falhar, presume que você só pode usar FTP. Mas isso pode não ser verdade, se wp-content em si não for gravável, mas por exemplo wp-content / plugins é. Então, forçar FS_METHOD funciona.
Sebastian Schmid
3
ele funciona, mas o problema agora é que, após descompactar o pacote, o erro diz: "Não foi possível criar o diretório."
Andrew
3
Isso me ajudou, mas apenas porque expôs mais informações sobre a falha. O principal problema é ter permissões de gravação para a conta do usuário que está fazendo a atualização. Para cada tipo de sistema, isso pode ser diferente. (observe que algumas respostas abaixo dizem para você definir permissões de gravação para daemon, ou httpd ou apache ...) Isso me ajudou a ver o trecho de PHP de um comentário abaixo (<? php echo (exec ("whoami")); ?>) para que eu pudesse saber qual usuário está executando a atualização. Fazer a alteração sugerida aqui parecia simplesmente suprimir o desafio das credenciais do FTP para que eu pudesse ver as mensagens de erro.
agentev
Estou usando o nginx e não o Apache. É bastante claro que PHP-FPM não usar a combinação correta de usuário / grupo (usando o truque descrito por @Aboozar Rajabi); no entanto, por algum motivo, a verificação WP falha (embora sem erros nos logs). Usar essa configuração me permitiu atualizar para a versão 4.7 perfeitamente!
Gwyneth Llewelyn
1
Eu tenho feito devops em outras áreas antes do WordPress, meu melhor palpite FS_METHODé a abreviação de FILESYSTEM_METHOD. Quando você está definindo para directmodificar 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.
Dylan Pierce
39

Se você estiver usando o Ubuntu.

sudo chown -R www-data:www-data PATH_TO_YOUR_WORDPRESS_FOLDER
Nanhe Kumar
fonte
7
-1 má ideia fazer isso, apenas wp-content deve ser propriedade de www-dataveja aqui: codex.wordpress.org/Hardening_WordPress ou aqui: stackoverflow.com/questions/18352682/…
timhc22
Essa resposta também corrige o erro "Falha na instalação: não foi possível localizar o diretório de conteúdo do WordPress (wp-content)." ao tentar instalar um plugin do Dashboard.
WindChimes
25

"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
Aboozar Rajabi
fonte
3
Não se esqueça de desabilitar exec () ou funções sensíveis semelhantes. em produção.
Arda
2
Melhor ainda é usar o <?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)
Gwyneth Llewelyn
Se você pode sudo e chown, você pode digitar, whoamientão veja as mesmas informações:sudo chown -R `whoami` /path/to/your/local/www/folder
Benji
11

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.)

Kenny
fonte
9

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!

KawaiKx
fonte
Esta é provavelmente a resposta correta para a maioria das pessoas. Acho que é a terceira vez que crio uma pasta e me esqueci de fazer o chown.
MrMysterious2502
7

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 apacheou 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.

Niels Keurentjes
fonte
Obrigada pelo esclarecimento. Existe uma maneira de configurar o servidor compartilhado para executar o PHP como o usuário correto ou consertar o proprietário ou outra solução?
Maxwell sc
4

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
Benja Garrido
fonte
4

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!

Hiren Gohel
fonte
3

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 .

Malta
fonte
3

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
Abhishek Rathore
fonte
2

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.

Purvik Dhorajiya
fonte
O FTP não é seguro e, como tal, nós o desativamos, portanto, não é uma solução. Em vez disso, usamos SFTP.
Laurence Cope de
1

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 auxver 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.

mahemoff
fonte
1

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

  1. Certifique-se de que o diretório do plugin é gravável pela identidade que está executando o seu processo php.
  2. 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.

Matt Woodward
fonte
1

Eu estava enfrentando o mesmo problema! Eu adicionei o código abaixo no arquivo wp-config.php (em qualquer linha) e está funcionando agora!

define('FS_METHOD', 'direct');
erovere
fonte