WordPress, eklentileri yüklemek için FTP kimlik bilgilerimi istiyor


118

Yerel sistemime bir WordPress blogu kurdum. Ancak yöneticiden eklenti eklemeye çalıştığımda FTP erişimini istiyor. WordPress'in FTP olmadan yükleyebilmesi için neyi yapılandırmam gerekiyor?

Yanıtlar:


302

Kodu wp-config.php'ye eklemeyi deneyin:

define('FS_METHOD', 'direct');

29
Google'da arama yaparken bu yanıtı tökezlemeye devam ediyorum, bu yüzden buraya kendim ve başkaları için bir not gönderiyorum: Kod wp-admin / includes / file.php: get_filesystem_method içindedir. Wordpress bir 'wp-content / temp-write-test -'. Time () dosyası oluşturmaya çalışır. Bu başarısız olursa, yalnızca FTP kullanabileceğinizi varsayar. Ancak wp içeriğinin kendisi yazılabilir değilse, ancak örneğin wp-content / plugins yazılabilirse, bu doğru olmayabilir. Daha sonra FS_METHOD'u zorlamak işe yarar.
Sebastian Schmid

3
çalışıyor ancak şimdi sorun, paketi açtıktan sonra hata şunu söylüyor: "Dizin oluşturulamadı."
Andrew

3
Bu bana yardımcı oldu, ancak yalnızca başarısızlıkla ilgili daha fazla bilgiyi açığa çıkardığı için. Temel sorun, güncellemeyi yapan kullanıcı hesabı için yazma izinlerine sahip olmaktır. Her sistem türü için bu farklı olabilir. (aşağıdaki bazı yanıtların size arka plan programı, httpd veya apache için yazma izinleri belirlemenizi söylediğine dikkat edin ...) PHP parçacığını aşağıdaki bir yorumdan görmeme yardımcı oldu (<? php echo (exec ("whoami")); ?>) böylece güncellemeyi hangi kullanıcının çalıştırdığını anlayabilirim. Burada önerilen değişikliği yapmak, hata mesajlarını görebilmem için FTP kimlik bilgileri zorluğunu ortadan kaldırıyor gibiydi.
agentv

Apache değil nginx kullanıyorum. PHP-FPM gayet açıktır gelmez (@Aboozar Rajabi tarafından açıklanan trick kullanarak) sağ kullanıcı / grup kombinasyonunu kullanabilirsiniz; ancak, bazı nedenlerden dolayı, WP kontrolü başarısız olur (yine de günlüklerde hata yoktur). Bu ayarı kullanmak, kusursuz bir şekilde 4.7'ye geçmemi sağladı!
Gwyneth Llewelyn

1
WordPress'ten önce başka alanlarda da geliştirmeler yapıyordum, en iyi tahminim FS_METHODbunun kısaltması FILESYSTEM_METHOD. directDosyaları değiştirmeyi tanımlarken - yani FTP kullanmıyorsanız, WordPress'i doğrudan sitedeki dosyaları denemeye ve değiştirmeye zorluyorsunuz.
Dylan Pierce

40

Ubuntu kullanıyorsanız.

sudo chown -R www-data:www-data PATH_TO_YOUR_WORDPRESS_FOLDER

7
Bunu yapmak için -1 kötü fikir, sadece wp içeriğinin sahibi olmalı www-databuraya bakın: codex.wordpress.org/Hardening_WordPress veya burada: stackoverflow.com/questions/18352682/…
timhc22

Bu yanıt aynı zamanda "Kurulum başarısız oldu: WordPress içerik dizini (wp-içeriği) bulunamadı" hatasını düzeltir. Dashboard'dan bir eklenti kurmaya çalışırken.
WindChimes

25

"Eklentileri otomatik olarak yüklemek, yükseltmek veya silmek için WordPress kontrol panelini her kullandığınızda, WordPress'in dosya sistemindeki dosyalarda değişiklik yapması gerekir.

Herhangi bir değişiklik yapmadan önce, WordPress önce dosya sistemini doğrudan değiştirmek için erişimi olup olmadığını kontrol eder.

WordPress dosya sistemini doğrudan değiştirmek için gerekli izinlere sahip değilse, WordPress'in ihtiyaç duyduğu şeyi FTP yoluyla yapmaya çalışması için sizden FTP kimlik bilgileri istenecektir. "

Çözüm: Apache örneğinizin hangi kullanıcı olarak çalıştığını bulmak için aşağıdaki içeriğe sahip bir test komut dosyası oluşturun:

<?php echo(exec("whoami")); ?>

Benim için bu, www-data değil deemon idi. Ardından, izni şu şekilde düzeltin:

sudo chown -R daemon /path/to/your/local/www/folder

3
Exec () veya benzer hassas işlevleri devre dışı bırakmayı unutmayın. üretimde.
Arda

2
Daha da iyisi, <?php echo(exec("id")); ?>size kullanıcı kimliğinin ötesinde grup verileri sağlayacak olanı kullanmaktır :uid=5018(web27) gid=5012(client7) groups=5012(client7),5002(sshusers)
Gwyneth Llewelyn

Sudo ve chown yapabiliyorsanız yazabilirsiniz, whoamiböylece aynı bilgileri görün:sudo chown -R `whoami` /path/to/your/local/www/folder
Benji

11

OSX'te aşağıdakileri kullandım ve işe yaradı:

sudo chown -R _www:_www {path to wordpress folder}

_www, PHP'nin Mac üzerinde çalıştığı kullanıcıdır.

(Ayrıca bazı klasörleri de chmod yapmanız gerekebilir. Bunu önce ben yaptım ve düzeltmedi. Çalıştığı chown komutunu verene kadar değildi, bu yüzden chown komutu olup olmadığından emin değilim tek başına veya chmod ve chown kombinasyonu.)


9

Wordpress klasörünün sahipliğini yinelemeli olarak www-data olarak değiştirdim ve apache'yi yeniden başlattım.

sudo chown -R www-data:www-data <folderpath>

Tılsım gibi çalıştı!


Muhtemelen çoğu insan için doğru cevap budur. Sanırım bu üçüncü kez bir klasör oluşturdum ve chown'u unuttum.
MrMysterious2502

7

Google'daki ilk isabetten :

WordPress, dosyalara doğrudan erişemediğinde FTP kimlik bilgilerinizi sorar. Bu genellikle PHP'nin WordPress dosyalarınızın sahibi olan kullanıcı yerine apache kullanıcısı (mod_php veya CGI) olarak çalışmasından kaynaklanır.

Bu, çoğu paylaşılan barındırma ortamında oldukça normaldir - dosyalar kullanıcı olarak depolanır ve Apache, kullanıcı apacheveya httpd. Bu aslında iyi bir güvenlik önlemidir, bu nedenle açıklar ve saldırılar barındırılan dosyaları değiştiremez. Sen 777 güvenlik tüm WP dosyalarını ayarlayarak bu sorunu çözecek ama olabilir aracının hiçbir güvenlik, ben çok buna karşı tavsiye ediyorum bu yüzden. Sadece FTP kullanın, iyi bir sebeple otomatik olarak önerilen geçici çözümdür.


Açıklama için teşekkürler. Paylaşılan sunucuyu PHP'yi doğru kullanıcı olarak çalıştıracak veya sahibi veya başka bir çözümü düzeltecek şekilde yapılandırmanın bir yolu var mı?
Maxwell sc

5

Bir eklentinin yüklenmesi sırasında, Wordpress ana bilgisayar adınızı veya FTP ayrıntılarınızı sorar. Ardından şu adımları izleyin:

Sunucunuza giriş yapın ve / var / www / html / wordpress / adresine gidin . Wp-config.php dosyasını açın ve tanımlamadan sonra bu satırı ekleyin ('DB_COLLATE')

define('FS_METHOD', 'direct');

"Dizin oluşturulamadı" hatası alırsanız. Wordpress dizininize aşağıdaki gibi özyinelemeli yazma izinleri verin

chmod -R go+w wordpress

NOT. Güvenlik için, bir eklentiyi şu şekilde kurduğunuzda bu izinleri iptal edin:

chmod -R go-w wordpress

4

İlk önce kurulum klasörünüze gidin (örneğin)

cd /Applications/XAMPP/xamppfiles/

Şimdi htdocs dizininizi değiştireceğiz:

sudo chown -R daemon htdocs

İstendiğinde kök parolanızı girin ve ardından bir chmod çağrısıyla bitirin:

sudo chmod -R g+w htdocs

4

Burada özetlenen adımları izleyerek ve basitçe çalıştırarak Ubuntu 14.04'te yerel bir WordPress kurulumu yaptım :

sudo chown -R www-data:www-data {path_to_your_project_directory}

eklentileri indirmeyle ilgili sorunumu çözdüm. Bu gönderiyi burada bırakmamın tek nedeni, sorunumu Google'da araştırdığımda, bu ilk sonuçlardan biriydi ve beni sorunumun çözümüne yönlendirdi.

Umarım bu herkese yardımcı olur!


3

Daha büyük bir sorunun parçası olarak aynı sorunu yaşadık. Önerilen çözüm

define('FS_METHOD', 'direct');

bu pencereyi gizler, ancak temaları ve yükseltmeleri vb. yüklemede hala sorun yaşadık. Bu izinlerle ilgilidir, ancak bizim durumumuzda sorunu php OS satıcısı mod_php'den daha güvenli php OS satıcısı FastCGI uygulamasına geçerek çözdük .


2

Bu sorunu çözmenin en kolay yolu, aşağıdaki FTP bilgilerini bilgisayarınıza eklemektir. wp-config.php

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/');

FTP_BASE , WordPress kurulumunun "temel" (ABSPATH) klasörünün tam yoludur FTP_CONTENT_DIR , WordPress kurulumunun wp-içerik klasörünün tam yoludur. FTP_PLUGIN_DIR , WordPress kurulumunun eklentiler klasörünün tam yoludur.


FTP güvenli değil ve bu nedenle devre dışı bırakıyoruz, bu yüzden bir çözüm değil. Bunun yerine SFTP kullanıyoruz.
Laurence Cope

1

Niels tarafından belirtildiği gibi, bunun nedeni sunucu işlem kullanıcısının Wordpress klasörüne yazamamasıdır.

Ama işte birçok makalenin açıklamadığı şey. Bu, nginx sürecinin değil, php sürecinin sahibidir. Nginx sahibini değiştirmeye çalışırsanız, bunu çözmez.

ps auxÇözmek için, php-fpm işlemine hangi kullanıcının sahip olduğunu görmeye çalışın . Ardından, kullanıcının wordpress klasörünün sahibiyle aynı kullanıcı olduğunu veya en azından ona yazabileceğini kontrol edin. Kullanıcı buna yazamazsa, klasörün izinlerini ve / veya sahipliğini değiştirmeniz gerekir; veya iki kullanıcıyı (sunucu sahibi ve wordpress klasör sahibi) klasöre yazabilen ortak bir gruba koyun; veya php.ini "user" özelliğini klasöre yazabilen bir kullanıcıya değiştirin.


1

Bu soruya pek çok benzer yanıt var, ancak bunların hiçbiri asıl nedene tam olarak değinmiyor. Sebastian Schmid'in orijinal gönderi hakkındaki yorumu buna değiniyor ama tam olarak değil. İşte 2018-11-06 itibarıyla benim alacağım:

Ana neden

WordPress yönetici arayüzü üzerinden bir eklenti yüklemeye çalıştığınızda, WordPress "get_filesystem_method ()" (ref: /wp-admin/includes/file.php:1549 ) adlı bir işleve çağrı yapar . Bu rutin, söz konusu konuma (bu durumda eklenti dizini) bir dosya yazmaya çalışacaktır. WordPress kullanıcısının (php'yi çalıştıran kullanıcı kimliğini düşünün) dosyayı söz konusu konuma yazmasına izin vermek için dosya izinleri doğru ayarlanmadıysa, elbette burada hemen başarısız olabilir.

Dosya oluşturulabiliyorsa, bu işlev daha sonra geçici dosyanın dosya sahibini, işlevin geçerli dosyasının (ref: /wp-admin/includes/file.php:1572 ) dosya sahibiyle birlikte algılar ve ikisini karşılaştırır. Eğer eşleşirlerse, WordPress'in sözleriyle, "WordPress, WordPress dosyalarıyla aynı sahipli dosyalar oluşturuyor, bu, PHP aracılığıyla yeni dosyaları değiştirmenin ve oluşturmanın güvenli olduğu anlamına gelir" ve eklentiniz FTP Kimlik Bilgileri istemi olmadan başarıyla yüklenir. Eşleşmiyorlarsa, FTP Kimlik Bilgileri istemini alırsınız.

Düzeltmeler

  1. Eklenti dizininin php sürecinizi çalıştıran kimlik tarafından yazılabilir olduğundan emin olun.
  2. Php sürecinizi çalıştıran kimliğin şunlardan birinin dosya sahibi olduğundan emin olun:

    a) Tüm WordPress uygulama dosyaları veya ...
    b) En azından /wp-admin/includes/file.php dosyası

Son Yorumlar

Bu sorunu çözmek için özellikle dosya sahipliğini file.php'ye uygulamak konusunda aşırı istekli değilim (en azını söylemek biraz zor geliyor!). Bana öyle geliyor ki, bu noktada WordPress kod tabanı, PHP sürecini WordPress uygulama dosyalarının dosya sahibiyle aynı kullanıcı sorumlusu altında yürütmemize doğru eğiliyor. Bu konuda topluluğun bazı yorumlarını beklerim.


1

Ben de aynı problemle karşı karşıyaydım! Aşağıdaki kodu wp-config.php dosyasına (herhangi bir satırda) ekledim ve şimdi çalışıyor!

define('FS_METHOD', 'direct');
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.