pentru a efectua acțiunea solicitată wordpress are nevoie de acces la serverul tău web. te rugăm să introduci datele ftp

2 iun. 2016, 19:13:57
Vizualizări: 213K
Voturi: 85

Urmăresc Modificarea Permisiunilor Fișierelor « WordPress Codex, dar când încerc să actualizez și/sau să instalez un plugin și/sau o temă prin wp-admin, primesc următorul mesaj:

Pentru a efectua acțiunea solicitată, WordPress are nevoie de acces la serverul tău web. Te rugăm să introduci credențialele FTP pentru a continua. Dacă nu îți amintești credențialele, ar trebui să contactezi furnizorul tău de hosting.

la nivel de sistem de fișiere:

# 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/
# 

httpd rulează ca utilizator 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
$ 

Aș dori să pot efectua acțiunea solicitată (instalare și/sau actualizare) prin /wp-admin fără credențiale FTP.

Cum pot face acest lucru?

7
Comentarii

Aceasta este o instalare pe localhost? Dacă da, vezi: http://wordpress.stackexchange.com/questions/19649/wordpress-on-localhost-lamp-doesnt-let-me-install-plugins

Greg McMullen Greg McMullen
2 iun. 2016 20:55:03

@GregMcMullen nu, aceasta NU este o instalare pe localhost & răspunsul "acceptat" din linkul pe care l-ai comentat este să schimbi recursiv proprietatea unui director wordpress la nobody - asta nu va funcționa pentru mine deoarece httpd rulează ca apache.

alexus alexus
2 iun. 2016 22:32:37

@alexus Se pare că fișierele tale sunt în prezent deținute de root.apache. Ai încercat apache.apache în loc de nobody?

Tim Malone Tim Malone
3 iun. 2016 00:28:43

@TimMalone setarea fișierelor/directoarelor ca apache.apache sau root.apache nu ar face nicio diferență, atâta timp cât httpd rulează ca apache, iar uid-ul lui apache face parte din grupul gid al lui apache, este același lucru, deoarece permisiunile mele sunt setate la g+w.

alexus alexus
3 iun. 2016 00:37:49

@alexus Ok, încercați altceva - setați FS_METHOD la 'direct' în wp-config.php (https://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants)

Tim Malone Tim Malone
3 iun. 2016 00:43:18

@TimMalone conform https://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants - Rețineți că alegerea dumneavoastră aici are implicații de securitate serioase.

alexus alexus
3 iun. 2016 00:52:40
Arată celelalte 2 comentarii
Toate răspunsurile la întrebare 7
9
185

Adaugă următoarele în wp-config.php:

define( 'FS_METHOD', 'direct' );

Spune-mi cum funcționează pentru tine.

22 iun. 2017 17:34:31
Comentarii

a funcționat pentru mine, cu excepția cazului în care ai permisiuni greșite în sistemul de fișiere. Apropo, am adăugat-o chiar la începutul fișierului wp-config.php

Toskan Toskan
28 sept. 2018 21:12:51

Asigură-te că citești postarea la care Alexus a făcut referire înainte de a folosi această metodă. Această metodă funcționează cu siguranță (mi-a rezolvat problema), dar nu ar trebui să folosești această metodă într-un mediu de hosting partajat sau în orice mediu riscant unde ai putea compromite securitatea făcând asta.

JamesHoux JamesHoux
18 mai 2019 18:51:38

după ce am adăugat acest lucru, primesc această eroare:

Update Failed: The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.

Shawn Shawn
18 mar. 2020 05:57:35

Aceasta este potențial periculoasă pentru utilizatorii care migrează întregul site de la localhost pe un server live. Aș prefera să folosești metoda lui @Syamraj K de modificare a permisiunilor fișierelor sau să elimini acest lucru din wp-config.php înainte de a migra online

Cedric Ipkiss Cedric Ipkiss
10 nov. 2020 03:48:04

omule!! ești eroul meu. mulțumesc că mi-ai economisit ore întregi pentru asta

Jacky Supit Jacky Supit
14 feb. 2021 16:31:03

Dacă preferați să folosiți WP CLI, puteți rula această comandă în schimb: wp config set FS_METHOD direct. Aceasta va modifica fișierul wp-config.php

Flimm Flimm
2 sept. 2022 11:00:22

Vă rugăm să explicați ce face această modificare înainte de a-i îndemna pe mulți să o insereze orbește în fișierul lor de configurare.

Altimus Prime Altimus Prime
5 apr. 2023 06:53:57

WP găzduit pe Google Cloud compute: Am adăugat define( 'FS_METHOD', 'direct' ); în wp-config, apoi am setat drepturile cu sudo chown -R www-data:www-data /home/numelemeusite/public_html/, am actualizat pluginul și am revenit la drepturile inițiale cu sudo chown -R numelemeu:numelemeu /home/numelemeusite/public_html/

Patrik Rikama-Hinnenberg Patrik Rikama-Hinnenberg
3 mai 2024 17:46:31
Arată celelalte 4 comentarii
7
32

Aceasta înseamnă că WordPress are permisiuni limitate pentru a face modificări în directorul în care a fost instalat.

Pentru a remedia această problemă, tot ce trebuie să faci este să acorzi permisiunile necesare.

Rulează următoarea comandă în Terminal / Putty / Linia de comandă după ce te-ai conectat la serverul tău prin SSH:

sudo chown -R apache:apache /var/www/html
5 aug. 2016 09:35:11
Comentarii

permisiunile sunt în regulă, citește din nou întrebarea mea)

alexus alexus
5 aug. 2016 21:55:08

chown: utilizator invalid: ‘apache:apache’

numediaweb numediaweb
2 feb. 2018 11:46:50

Ține minte, Apache poate fi diferiți utilizatori în diferite distribuții de Linux. Deci poți încerca groups <username> și să vezi dacă dă eroare sau nu, deoarece utilizatorul și grupul pentru Apache sunt de obicei același. Apoi folosește utilizatorul corect. Cele mai comune în Ubuntu sunt "www-data:www-data" sau "www:www" pentru chown pe fișierele Apache.

MontyThreeCard MontyThreeCard
25 ian. 2019 18:09:55

După ce am reușit să găsesc numele de utilizator corect, a funcționat perfect (vezi și comanda pentru a lista toți utilizatorii)

Top-Master Top-Master
8 ian. 2020 13:38:45

În cazul în care doriți să îl utilizați pe OSX, folosiți _www:_www (Mojave, nu știu cum ar fi în alte versiuni)

Larzan Larzan
6 mai 2020 17:08:58

Acesta este un răspuns mai bun. Răspunsul cu mai multe voturi este periculos pentru mulți utilizatori neavizați care migrează întregi directoare de site-uri de la localhost pe un server live, chiar și atunci când folosesc plugin-uri WordPress

Cedric Ipkiss Cedric Ipkiss
10 nov. 2020 03:46:45

A funcționat perfect :) evită să folosești define( 'FS_METHOD', 'direct' );

Himanshu Rawat Himanshu Rawat
7 mar. 2021 12:27:40
Arată celelalte 2 comentarii
3
10

Deși este perfect corect să ai proprietatea ca root:apache cu permisiunile 775, iar httpd să ruleze ca apache, WordPress nu este mulțumit cu această configurație. El dorește ca proprietarul să fie apache, conform wp-admin/includes/file.php:

    // Încearcă să determine proprietarul fișierelor WordPress și al fișierelor nou create
   $wp_file_owner = $temp_file_owner = false;
   if ( function_exists('fileowner') ) {
      $wp_file_owner = @fileowner( __FILE__ );
      $temp_file_owner = @fileowner( $temp_file_name );
  }

În cazul tău ar fi:
wp_file_owner = root
temp_file_owner = apache

if ( $wp_file_owner !== false && $wp_file_owner === $temp_file_owner ) {
    // WordPress creează fișiere cu același proprietar ca fișierele WordPress,
    // asta înseamnă că este sigur să modifici și să creezi fișiere noi prin PHP.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'file_owner';
} elseif ( $allow_relaxed_file_ownership ) {
    // Directorul $context este scriabil, și $allow_relaxed_file_ownership este setat, asta înseamnă că putem modifica fișiere
    // în siguranță în acest director. Acest mod nu creează fișiere noi, doar modifică cele existente.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'relaxed_ownership';
}

Dacă $wp_file_owner este același cu $temp_file_owner, atunci continuă. În cazul tău, s-ar ajunge în elseif, care conform comentariului nu permite ștergerea/crearea, ci doar actualizările (am verificat acest lucru actualizând codul unui plugin din interiorul WordPress și a funcționat).

Notă: Nu am analizat în detaliu codul, aceasta este doar interpretarea mea rapidă. Am avut aceeași problemă și odată ce am schimbat user:group astfel încât utilizatorul httpd să fie și proprietarul fișierelor, nu mi-a mai cerut credentiale FTP.

23 aug. 2017 20:14:32
Comentarii

Da, schimbarea proprietarului în www-data a funcționat pentru mine. Amuzant WordPress!

ankush981 ankush981
30 aug. 2018 06:45:02

descoperire interesantă, voi investiga asta... mulțumesc +1 de la mine)

alexus alexus
16 dec. 2019 19:07:15

Doar în cazul în care cineva întâmpină această problemă - asta a funcționat doar dacă am schimbat proprietarul TUTUROR fișierelor/directoarelor WordPress la utilizatorul serverului meu web. Doar schimbarea directorului wp-content și a tuturor fișierelor copil nu a rezolvat problema. A trebuit să schimb recursiv directorul rădăcină WordPress și toate fișierele copil pentru ca soluția să funcționeze.

Ambulare Ambulare
5 feb. 2021 16:29:32
0

Nu este un răspuns direct, dar probabil trebuie menționat - aceasta este o problemă pe care ar trebui să o evitați să o rezolvați, cu excepția cazului în care vorbim despre un mediu de dezvoltare local, în care puteți seta permisiunile la 777.

Motivul este că, dacă serverul web poate suprascrie codul dvs., atunci orice cod rău intenționat care rulează pe acesta va putea face același lucru. Riscul este mult mai mare decât comoditatea de a economisi câteva secunde prin evitarea introducerii credențialelor FTP.

3 iun. 2016 06:01:35
0

Deși întrebarea nu mai este atât de nouă, vreau să adaug și eu câteva observații pe această temă.

Mulți oameni au Centos(7) pe serverul lor VPS, iar următoarele linii de cod ar putea rezolva problema lor.

După părerea mea, totul are de-a face cu SELinux, care împiedică WordPress să își facă treaba așa cum este dorit. Depășește scopul acestui articol să explicăm ce este SELinux și ce face. Pentru informație, introducerea începe cu:

Security-Enhanced Linux (SELinux) este un mecanism de securitate cu control obligatoriu al accesului (MAC) implementat în kernel.

Doar 3 pași de urmat:

  • 1 Deschideți un terminal (sau accesați serverul prin SSH)
  • 2 Adăugați următoarea linie de cod chcon -R -t httpd_sys_content_t /var/www/html/wordpress
  • 3 Adăugați a doua linie de cod chcon -R -t httpd_sys_rw_content_t /var/www/html/wordpress

Nu este necesară repornirea serverului sau repornirea vreunui serviciu.

Nu pot afirma că ajută pe toată lumea, dar pentru cei care nu au dezactivat SELinux, ar trebui să fie o ușurare.

Noroc

Notă: Vă rugăm să ajustați în funcție de nevoile dumneavoastră (adică calea către WordPress)

edit: asigurați-vă că eliminați linia define("FS_METHOD", "direct"); când aceasta este/ a fost folosită în wp-config.php, deoarece aceasta este absolut inacceptabilă dacă liniile de cod de mai sus funcționează conform așteptărilor.

2 mai 2018 02:07:39
2

adaugă următoarele în fișierul wp-config.php între cele 2 comentarii

/* Adaugă orice valoare personalizată între această linie și linia "stop editing". */

define( 'FS_METHOD', 'direct' );

/* Gata, oprește editarea! Publicare fericită. */
14 feb. 2023 16:05:25
Comentarii

Acesta este același lucru ca și răspunsul existent cu cele mai multe voturi, cu excepția comentariilor. Chiar contează asta?

Rup Rup
15 feb. 2023 12:45:39

Am adăugat răspunsul pentru că, știind unde să adaug codul, ar putea ajuta cu adevărat un alt începător ca mine :)

shimii shimii
15 feb. 2023 17:41:58
0

În cazul meu, am rezolvat această problemă trecând de la GIT înapoi la modul FTP.

Fără mai multe avertismente.

Poate că acest lucru îi va ajuta și pe alții.

16 aug. 2018 21:12:32