para executar a ação solicitada, o wordpress precisa acessar seu servidor web. por favor digite seu ftp


28

Estou seguindo Alterando permissões de arquivo «WordPress Codex , mas quando tento atualizar e / ou instalar plugine / ou themepassar wp-admin, estou conseguindo:

Para executar a ação solicitada, o WordPress precisa acessar seu servidor web. Digite suas credenciais de FTP para continuar. Se você não se lembrar de suas credenciais, entre em contato com seu host.

do nível do sistema de arquivos:

# ls -ld wp-content/ wp-content/plugins/ wp-content/themes/
drwxrwxr-x.  6 root apache 4096 Jun  2 12:01 wp-content/
drwxrwxr-x. 28 root apache 4096 Jun  2 00:00 wp-content/plugins/
drwxrwxr-x. 11 root apache 4096 May 11 16:34 wp-content/themes/
# 

httpdroda como apache:

$ ps auxw | grep httpd
root     20158  0.0  0.1 533080 26192 ?        Ss   15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20233  0.0  0.2 612608 34908 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20234  0.0  0.2 538772 46904 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20235  0.0  0.1 536832 24268 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20236  0.0  0.2 626272 35640 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20237  0.0  0.0 535296  9592 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20322  0.0  0.1 537088 26620 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20380  0.0  0.2 626060 33816 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20429  0.0  0.1 538216 29184 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20447  0.0  0.2 629380 43180 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20448  0.0  0.2 626172 35224 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
alexus   24073  0.0  0.0 112652   972 pts/9    R+   15:13   0:00 grep --color=auto httpd
$ 

Eu gostaria de poder executar a ação solicitada ( installe / ou update) /wp-admin sem credenciais de FTP.

Como eu posso fazer isso?


1
Esta é uma instalação localhost? Em caso afirmativo, consulte: wordpress.stackexchange.com/questions/19649/…
Greg McMullen 2/16

1
@ GregMcMullen não, esta NÃO é a instalação localhost e a resposta "aceita" do link que você comenta é alterar recursivamente a propriedade de um diretório wordpress para nobody- isso não funcionará para mim devido à httpdexecução como apache.
alexus

@alexus Parece que seus arquivos pertencem ao root.apache no momento. Você tentou o apache.apache em vez de ninguém?
Tim Malone

@TimMalone arquivos de configuração / diretório apache.apacheou root.apachenão faria qualquer diferença, contanto que httpdé executado como apachee apache's uidé parte apache giddo grupo, é tudo a mesma coisa, porque meus permissões definido para g+w.
alexus

@alexus Ok, outra coisa para tentar - FS_METHOD conjunto de 'direta' no wp-config.php ( codex.wordpress.org/... )
Tim Malone

Respostas:


52

Adicione o seguinte ao wp-config.php:

define( 'FS_METHOD', 'direct' );

Deixe-me saber como isso funciona para você.



funcionou para mim, a menos que você tenha permissões ruins no sistema de arquivos. Entre I adicionado no topo da wp-config
Toskan

Certifique-se de ler a postagem com a qual Alexus vinculou antes de usar esse método. Esse método definitivamente funciona (resolveu o problema para mim), mas você definitivamente não deve usá-lo em um ambiente de hospedagem compartilhada ou em qualquer ambiente de risco em que possa comprometer a segurança ao fazer isso.
JamesHoux

16

Isso significa que o WordPress tem permissão limitada para fazer alterações na pasta em que foi instalado.

Para corrigir isso, tudo o que você precisa fazer é fornecer as permissões necessárias para o mesmo.

Execute o seguinte comando no seu Terminal / Putty / Commandline Prompt após conectar-se ao seu servidor via SSH:

sudo chown -R apache:apache /var/www/html

Confira este artigo para obter detalhes completos.


permissões são fina, re-ler a minha pergunta)
alexus

3
chown: usuário inválido: 'apache: apache'
numediaweb 02/02

1
Lembre-se, o Apache pode ser usuários diferentes em diferentes tipos de Linux. Portanto, você pode tentar os grupos <nome do usuário> e ver se há erros ou não, pois o usuário e o grupo do Apache geralmente são os mesmos. Em seguida, use o usuário correto. O mais comum no Ubuntu é "www-data: www-data" ou "www: www" para exibir arquivos Apache.
MontyThreeCard 25/01

2

Mesmo que seja totalmente correto ter a propriedade como root:apachenas permissões 775 e httpd para executar como apache, o Wordpress não gosta disso. Ele quer que o proprietário seja apache, conforme wp-admin/includes/file.php:

    // Attempt to determine the file owner of the WordPress files, and that of newly created files
   $wp_file_owner = $temp_file_owner = false;
   if ( function_exists('fileowner') ) {
      $wp_file_owner = @fileowner( __FILE__ );
      $temp_file_owner = @fileowner( $temp_file_name );
  }

O seu seria:
wp_file_owner = root
temp_file_owner = apache

if ( $wp_file_owner !== false && $wp_file_owner === $temp_file_owner ) {
    // WordPress is creating files as the same owner as the WordPress files,
    // this means it's safe to modify & create new files via PHP.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'file_owner';
} elseif ( $allow_relaxed_file_ownership ) {
    // The $context directory is writable, and $allow_relaxed_file_ownership is set, this means we can modify files
    // safely in this directory. This mode doesn't create new files, only alter existing ones.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'relaxed_ownership';
}

Se $ wp_file_owner for o mesmo que $ temp_file_owner, continue. O seu seria pego no elseif, que, de acordo com o comentário, não permite excluir / criar, mas apenas atualizações (verifiquei isso atualizando o código de um plug-in no Wordpress e funcionou).

Observe que não examinei extensivamente o código; esta é apenas minha interpretação rápida. Eu tive o mesmo problema e uma vez que mudei de user: group para que o usuário httpd também seja o proprietário do arquivo, ele não solicitou mais credenciais de FTP.


Sim, mudar o proprietário para www-datatrabalhar para mim. WordPress engraçado!
precisa saber é o seguinte

1

Não é uma resposta direta, mas provavelmente deve ser dito - este é um problema que você deve evitar resolver, a menos que esteja falando de um desenvolvimento local. Nesse caso, você pode simplesmente definir permissões para 777.

O motivo é que, se o servidor da Web puder sobrescrever seu código, qualquer código malicioso em execução nele poderá fazer isso também. O risco é muito maior do que a conveniência de economizar alguns segundos por não precisar digitar as credenciais do ftp.


0

Embora a questão não seja mais tão nova, quero acrescentar meus dois centavos sobre esse assunto também.

Muitas pessoas têm Centos (7) em seu servidor VPS e as seguintes linhas de código podem resolver seu problema.

O Imho tem tudo a ver com o SELinux, que impede o WordPress de fazer seu trabalho como desejado. Vai muito longe para explicar o que é o SELinux e o que ele faz. Para sua informação, a introdução começa com:

O Security-Enhanced Linux (SELinux) é um mecanismo de segurança de controle de acesso obrigatório (MAC) implementado no kernel.

Apenas 3 etapas a seguir:

  • 1 Abra um terminal (ou acesse o servidor através do SSH)
  • 2 Adicione a seguinte linha de código chcon -R -t httpd_sys_content_t /var/www/html/wordpress
  • 3 Adicione a segunda linha de código chcon -R -t httpd_sys_rw_content_t /var/www/html/wordpress

Não é necessário reiniciar o servidor ou reiniciar a partir de qualquer daemon necessário.

Não vou dizer que ajuda a todos, mas para quem não desativou o SELinux, isso deve ser um alívio.

Felicidades

Nota: ajuste-se às suas próprias necessidades (o que significa caminho para o WordPress)

edit: certifique-se de remover a linha define("FS_METHOD", "direct");quando ela é / foi usada, wp-config.phpporque isso é absolutamente impossível quando as linhas de código acima fazem como desejado.


0

No meu caso, resolvi isso alternando do GIT para o modo FTP.

Não há mais aviso.

Talvez isso ajude outra pessoa também.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.