Jak mogę powstrzymać WordPressa przed monitowaniem mnie o podanie informacji FTP podczas aktualizacji?


29

Jak mogę powstrzymać WordPressa przed monitowaniem mnie o podanie informacji FTP podczas aktualizacji?

Odpowiedzi:


23

Jeśli edytujesz wp-config.phpplik, możesz wstępnie załadować te ustawienia FTP jako stałe odczytywane przez WordPress. Pamiętaj, że na współdzielonym hoście powinieneś pamiętać o możliwych implikacjach bezpieczeństwa. Abywp-config.php uzyskać więcej informacji, zobacz Edycja .

Twoje ustawienia będą się różnić, ale działają one dla mnie i mojej konfiguracji hostingu. Podałem niektóre nieużywane stałe, z prefiksem:

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/');
// define('FTP_PUBKEY', '/home/username/.ssh/id_rsa.pub');
// define('FTP_PRIKEY', '/home/username/.ssh/id_rsa');
define('FTP_USER', 'my-ftp-username');
define('FTP_PASS', 'my-ftp-password');
define('FTP_HOST', 'ftp.my-site.example.com');
// define('FTP_SSL', false);

Jest to najprostszy sposób, ale jak mówi Pixeline poniżej, sprawdź uprawnienia do plików. Dwa z trzech poświadczeń są przechowywane w bazie danych, ale trzeci zapisany jest w pliku (nie pamiętam, który z nich jest poza moją głową).
John P Bloch,

12

Sprawdź własność pliku. Gdy użytkownik, który działa jako apache, może pisać do katalogów wordpress, wówczas zintegrowany proces aktualizacji działa bez ftp. Poświadczenia FTP dotyczą, jeśli serwer WWW nie ma odpowiednich uprawnień do twoich plików, a następnie wordpress poprosi o podanie danych FTP i spróbuje użyć ich do FTP z powrotem na ten sam serwer, na którym jest w stanie zapisać potrzebne pliki.


1
Naprawdę nie powinieneś modyfikować własności pliku do własności serwera, ponieważ jest to potencjalne zagrożenie bezpieczeństwa.
Otto,

... chyba że był źle skonfigurowany, jak to było w moim przypadku :)
pixeline

5

Wygląda na to, że WordPress nie tylko sprawdza, czy katalogi są zapisywalne, ale sprawdza również, czy użytkownik Apache OWNS OWNS katalogi (a przynajmniej, jeśli użytkownik Apache jest właścicielem utworzonego pliku tymczasowego). Obserwuj następujące wiersze kodu w /wp-admin/includes/file.php: get_filesystem_method ():

if ( $temp_handle ) {
    if ( getmyuid() == @fileowner($temp_file_name) )
        $method = 'direct';
    @fclose($temp_handle);
    @unlink($temp_file_name);
}

Szybkim rozwiązaniem będzie wydanie tego polecenia i przekazanie własności całej instalacji Wordpress Apache:

sudo chown -R www-data wordpress/

Gdzie www-data to użytkownik Apache, a wordpress to oczywiście folder instalacyjny WordPress.

Udokumentowałem moje rozwiązanie tutaj: https://ardeearam.wordpress.com/2013/02/03/solved-wordpress-asking-for-ftp-credentials-when-upgrading/


Ten link jest już martwy. Oto archiwum: web.archive.org/web/20131213005955/http://rubiks.ph/…
Sam Wilson

Czy ktoś może wyjaśnić szczegóły: „$ allow_relaxed_file_ownership Opcjonalne. Czy zezwolić na zapisywanie w Grupie / Świecie”.
Sam Wilson,

@Sam Wilson Przeprowadziłem migrację niektórych moich wpisów na blogu do bezpłatnego konta WordPress. Stara domena jest martwa.
Ardee Aram

1

Podczas dostrajania Apache 2.4 poprzez EasyApache4 w celu poprawy prędkości ładowania strony na serwerze Centos 7 PHP 7, włączyłem mod_pagespeed. Po włączeniu automatycznie wyłączy mod_ruid2 i mod_cgi (i włączy pozostałe dwa moduły). Po wyłączeniu mod_pagespeed, nie włączy automatycznie mod_ruid2 automatycznie - włączy tylko mod_cgi. Bez mod_ruid2 Wordpress zażąda poświadczeń FTP.

Nie ma potrzeby kodowania wp-config.php na stałe lub ustawiania uprawnień do plików (niebezpiecznie) na 777. Wystarczy ręcznie włączyć mod_ruid2, ponownie uruchomić Apache, a problem z zezwoleniem na FTP / plik został rozwiązany. Wordpress i wtyczki można teraz aktualizować jak zwykle, a media przesłać do galerii Wordpress. Działa od razu.

Właśnie sprawdziłem, że zmiana z MPM Prefork na Worker spowoduje wyłączenie mod_ruid2. Podczas powrotu z Worker do Prefork nie włączy mod_ruid2, co powoduje problem opisany w tym poście.

W obu przypadkach kluczem jest sprawdzenie i włączenie mod_ruid2.

Mam nadzieję, że pomogłem.


-1

1) Nie mogłem się zgodzić z powyższą odpowiedzią, ponieważ była zbyt ogólna

1a) Po prostu nie chcę rekurencyjnie zmieniać właściciela wszystkich moich plików (tak jak w przypadku strzelby do zabicia muskito). Zwłaszcza, że ​​wcześniej działało to doskonale.

1b) Wordpress posiadający „podstępną” funkcję nagle prosi cię o poświadczenia dla ftp

2) Więc zacząłem kopać głębiej, wykorzystując jego przewagę Ardee Arama. Poszedłem do sprawdzenia pliku file.php i sprawdziłem jego własność. Wygląda na to, że plik.php jest zależny od jego własnej własności (która została niepoprawnie ustawiona jako root).

Poprawka: chown www file.php

UWAGA: Zamień www na dowolną dystrybucję lub ustawienia (możesz użyć ps aux | egrep "php | http" i zobaczyć, jaka jest jego własność w pierwszej kolumnie.

Mam nadzieję, że to pomoże komuś innemu być sfrustrowanym z tego powodu. Nie rozumiem nawet, dlaczego wordpress nie „narzeka” w pierwszej kolejności, a następnie proponuje użycie alternatywy FTP. Teraz jest to jak „funkcja”, która nagle zostaje wprowadzona.


Witamy w WPSE, th3penguinwhisperer. Zapraszamy na wycieczkę . Jeśli chodzi o „powyższą odpowiedź”, odpowiedzi mogą w dowolnej chwili zmienić kolejność w wyniku głosowania ludzi. Chciałbym, abyś edytował swój post, aby określić, do której odpowiedzi się odwołujesz, aby było jasne. Dziękujemy za dodanie twoich przemyśleń!
Tim Malone
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.