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?
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:
Kodu wp-config.php'ye eklemeyi deneyin:
define('FS_METHOD', 'direct');
FS_METHOD
bunun kısaltması FILESYSTEM_METHOD
. direct
Dosyaları değiştirmeyi tanımlarken - yani FTP kullanmıyorsanız, WordPress'i doğrudan sitedeki dosyaları denemeye ve değiştirmeye zorluyorsunuz.
Ubuntu kullanıyorsanız.
sudo chown -R www-data:www-data PATH_TO_YOUR_WORDPRESS_FOLDER
www-data
buraya bakın: codex.wordpress.org/Hardening_WordPress veya burada: stackoverflow.com/questions/18352682/…
"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
<?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)
whoami
böylece aynı bilgileri görün:sudo chown -R `whoami` /path/to/your/local/www/folder
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.)
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ı!
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ı apache
veya 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.
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
İ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
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!
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 .
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.
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.
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
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.