Zainstalowałem blog WordPress w moim systemie lokalnym. Ale kiedy próbuję dodać wtyczki od administratora, prosi o dostęp do FTP. Co muszę skonfigurować, aby WordPress mógł przesyłać pliki bez FTP?
118
Spróbuj dodać kod w wp-config.php:
define('FS_METHOD', 'direct');
FS_METHOD
to skrót odFILESYSTEM_METHOD
. Kiedy definiujesz, abydirect
modyfikować pliki - inaczej niż przy użyciu protokołu FTP, zmuszasz WordPress do próby zmiany plików bezpośrednio w witrynie.Jeśli używasz Ubuntu.
źródło
www-data
patrz tutaj: codex.wordpress.org/Hardening_WordPress lub tutaj: stackoverflow.com/questions/18352682/…„Za każdym razem, gdy używasz panelu sterowania WordPress do automatycznej instalacji, aktualizacji lub usuwania wtyczek, WordPress musi wprowadzić zmiany w plikach w systemie plików.
Przed wprowadzeniem jakichkolwiek zmian WordPress najpierw sprawdza, czy ma dostęp do bezpośredniego manipulowania systemem plików.
Jeśli WordPress nie ma niezbędnych uprawnień do bezpośredniej modyfikacji systemu plików, zostaniesz poproszony o podanie danych uwierzytelniających FTP, aby WordPress mógł spróbować zrobić to, czego potrzebuje, przez FTP ”.
Rozwiązanie: aby dowiedzieć się, z jakim użytkownikiem działa Twoja instancja Apache, utwórz skrypt testowy o następującej treści:
Dla mnie był to demon, a nie dane www. Następnie popraw pozwolenie przez:
źródło
<?php echo(exec("id")); ?>
które zapewni nawet dane grupowe poza identyfikatorem użytkownika:uid=5018(web27) gid=5012(client7) groups=5012(client7),5002(sshusers)
whoami
więc zobacz te same informacje:sudo chown -R `whoami` /path/to/your/local/www/folder
Na OSX użyłem następujących i zadziałało:
_www to użytkownik, na którym działa PHP na komputerze Mac.
(Może być również konieczne chmodowanie niektórych folderów. Zrobiłem to najpierw i nie naprawiłem tego. Dopiero gdy wykonałem polecenie chown, zadziałało, więc nie jestem pewien, czy to było polecenie chown samodzielnie lub połączenie chmod i chown.)
źródło
Zmieniłem własność folderu wordpress rekurencyjnie na www-data i ponownie uruchomiłem Apache.
Zadziałało jak urok!
źródło
Od pierwszego trafienia w Google :
Jest to raczej normalne w większości współdzielonych środowisk hostingowych - pliki są przechowywane jako użytkownik, a Apache działa jako użytkownik
apache
lubhttpd
. W rzeczywistości jest to dobre zabezpieczenie, więc exploity i hacki nie mogą modyfikować hostowanych plików. Możesz to obejść, ustawiając wszystkie pliki WP na zabezpieczenia 777, ale oznacza to brak zabezpieczeń, więc zdecydowanie odradzam to. Po prostu użyj protokołu FTP, jest to automatycznie zalecane obejście z dobrego powodu.źródło
Jeśli podczas instalacji wtyczki Wordpress zapyta o nazwę hosta lub dane FTP. Następnie wykonaj następujące kroki:
Zaloguj się na swój serwer i przejdź do / var / www / html / wordpress / . Otwórz wp-config.php i dodaj tę linię po define ('DB_COLLATE')
Jeśli pojawi się błąd „Nie można utworzyć katalogu”. Przyznaj uprawnienia do zapisu w swoim katalogu wordpress rekurencyjnie jako
UWAGA. Ze względów bezpieczeństwa cofnij te uprawnienia po zainstalowaniu wtyczki jako
źródło
Najpierw przejdź do folderu instalacyjnego (na przykład)
Teraz zamierzamy zmodyfikować twój katalog htdocs:
Po wyświetleniu monitu wprowadź hasło roota, a następnie zakończ je wywołaniem chmod:
źródło
Zrobiłem lokalną instalację WordPress na Ubuntu 14.04, postępując zgodnie z instrukcjami tutaj opisanymi i po prostu uruchamiając:
rozwiązałem mój problem z pobieraniem wtyczek. Jedynym powodem, dla którego zostawiam ten post, jest to, że kiedy wyszukałem w Google mój problem, był to jeden z pierwszych wyników i doprowadził mnie do rozwiązania mojego problemu.
Mam nadzieję, że ten pomoże każdemu!
źródło
Mieliśmy ten sam problem jako część większego problemu. Sugerowane rozwiązanie
ukrywa to okno, ale nadal mieliśmy problemy z ładowaniem motywów i uaktualnień itp. Jest to związane z uprawnieniami, jednak w naszym przypadku rozwiązaliśmy problem, przechodząc od dostawcy php OS mod_php do bezpieczniejszej aplikacji dostawcy php OS FastCGI .
źródło
Najłatwiejszym sposobem rozwiązania tego problemu jest dodanie następujących informacji FTP do pliku
wp-config.php
FTP_BASE to pełna ścieżka do folderu „podstawowego” (ABSPATH) instalacji WordPress. FTP_CONTENT_DIR to pełna ścieżka do folderu wp-content instalacji WordPress. FTP_PLUGIN_DIR to pełna ścieżka do folderu wtyczek instalacji WordPress.
źródło
Jak wspomniał Niels, dzieje się tak, ponieważ użytkownik procesu serwera nie może pisać do folderu Wordpress.
Ale tutaj jest rzecz, której wiele artykułów nie wyjaśnia. Jest właścicielem procesu php, a nie procesu nginx. Jeśli spróbujesz zmienić właściciela nginx, nie rozwiąże to tego problemu.
Aby go rozwiązać, spróbuj uruchomić
ps aux
i sprawdzić, który użytkownik jest właścicielem procesu php-fpm. Następnie sprawdź, czy użytkownik jest tym samym użytkownikiem, co właściciel folderu wordpress, czy przynajmniej może do niego pisać. Jeśli użytkownik nie może w nim pisać, musisz zmienić uprawnienia i / lub własność folderu; lub umieść dwóch użytkowników (właściciela serwera i właściciela folderu wordpress) we wspólnej grupie, która może pisać do folderu; lub zmień właściwość „user” php.ini na użytkownika, który może pisać do folderu.źródło
Istnieje wiele podobnych odpowiedzi na to pytanie, ale żadna z nich nie dotyka w pełni pierwotnej przyczyny. Komentarz Sebastiana Schmida do oryginalnego posta dotyka go, ale nie do końca. Oto moja opinia na dzień 2018-11-06:
Przyczyna
Kiedy spróbujesz załadować wtyczkę przez interfejs administratora WordPress, WordPress wykona wywołanie funkcji o nazwie „get_filesystem_method ()” (ref: /wp-admin/includes/file.php:1549 ). Ta procedura spróbuje zapisać plik w odpowiedniej lokalizacji (w tym przypadku w katalogu wtyczek). Oczywiście może się to natychmiast nie powieść, jeśli uprawnienia do pliku nie są ustawione prawidłowo, aby umożliwić użytkownikowi WordPress (myśląc o tożsamości użytkownika wykonującego php) zapisanie pliku w danej lokalizacji.
Jeśli plik można utworzyć, funkcja ta następnie wykrywa właściciela pliku tymczasowego, wraz z właścicielem pliku bieżącego pliku funkcji (ref: /wp-admin/includes/file.php:1572 ) i porównuje oba. Jeśli pasują do siebie, mówiąc słowami WordPress, „WordPress tworzy pliki jako ten sam właściciel co pliki WordPress, oznacza to, że można bezpiecznie modyfikować i tworzyć nowe pliki za pośrednictwem PHP”, a wtyczka została pomyślnie przesłana bez monitu o poświadczenia FTP. Jeśli nie pasują, pojawi się monit o poświadczenia FTP.
Poprawki
Upewnij się, że tożsamość, na której działa twój proces php, jest właścicielem pliku:
a) Wszystkie pliki aplikacji WordPress lub ...
b) Co najmniej plik /wp-admin/includes/file.php
Uwagi końcowe
Nie jestem przesadnie zainteresowany konkretnym zastosowaniem praw własności do pliku file.php, aby obejść ten problem (wydaje się to co najmniej trochę hakerskie!). Wydaje mi się, że w tym momencie baza kodu WordPress skłania się ku temu, abyśmy wykonywali proces PHP na tej samej zasadzie użytkownika, co właściciel pliku aplikacji WordPress. Z radością powitałbym kilka komentarzy społeczności na ten temat.
źródło
Miałem ten sam problem! Dodałem poniższy kod w pliku wp-config.php (w dowolnej linii) i już działa!
źródło