pentru a efectua acțiunea solicitată wordpress are nevoie de acces la serverul tău web. te rugăm să introduci datele ftp
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?


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

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.

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.

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

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

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

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.

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/

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

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

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)

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

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

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.

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

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

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.

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.

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.
