Saya memasang blog WordPress di sistem lokal saya. Tetapi ketika saya mencoba menambahkan plugin dari admin itu meminta akses FTP. Apa yang perlu saya konfigurasikan agar WordPress dapat mengunggah tanpa FTP?
Saya memasang blog WordPress di sistem lokal saya. Tetapi ketika saya mencoba menambahkan plugin dari admin itu meminta akses FTP. Apa yang perlu saya konfigurasikan agar WordPress dapat mengunggah tanpa FTP?
Jawaban:
Coba tambahkan kode di wp-config.php:
define('FS_METHOD', 'direct');
FS_METHOD
singkatnya FILESYSTEM_METHOD
. Saat Anda menentukan untuk direct
-modifikasi file - alias tidak menggunakan FTP, Anda memaksa WordPress untuk mencoba dan mengubah file di situs secara langsung.
Jika Anda menggunakan Ubuntu.
sudo chown -R www-data:www-data PATH_TO_YOUR_WORDPRESS_FOLDER
www-data
lihat di sini: codex.wordpress.org/Hardening_WordPress atau di sini: stackoverflow.com/questions/18352682/…
"Setiap kali Anda menggunakan panel kontrol WordPress untuk menginstal, mengupgrade, atau menghapus plugin secara otomatis, WordPress harus membuat perubahan pada file di sistem file.
Sebelum membuat perubahan apa pun, WordPress terlebih dahulu memeriksa apakah ia memiliki akses untuk memanipulasi sistem file secara langsung atau tidak.
Jika WordPress tidak memiliki izin yang diperlukan untuk mengubah sistem file secara langsung, Anda akan dimintai kredensial FTP sehingga WordPress dapat mencoba melakukan apa yang diperlukan melalui FTP. "
Solusi: Untuk mengetahui pengguna apa contoh apache Anda berjalan, buat skrip pengujian dengan konten berikut:
<?php echo(exec("whoami")); ?>
Bagi saya, itu daemon dan bukan www-data. Kemudian, perbaiki izin dengan:
sudo chown -R daemon /path/to/your/local/www/folder
<?php echo(exec("id")); ?>
yang bahkan akan memberi Anda data grup di luar id pengguna:uid=5018(web27) gid=5012(client7) groups=5012(client7),5002(sshusers)
whoami
jadi lihat info yang sama:sudo chown -R `whoami` /path/to/your/local/www/folder
Di OSX, saya menggunakan yang berikut ini, dan berhasil:
sudo chown -R _www:_www {path to wordpress folder}
_www adalah pengguna yang menjalankan PHP di Mac.
(Anda mungkin juga perlu mengubah beberapa folder juga. Saya telah melakukannya terlebih dahulu dan itu tidak memperbaikinya. Baru setelah saya melakukan perintah chown yang berhasil, jadi saya tidak yakin apakah itu perintah chown sendiri, atau kombinasi chmod dan chown.)
Saya mengubah kepemilikan folder wordpress menjadi www-data secara rekursif dan memulai ulang apache.
sudo chown -R www-data:www-data <folderpath>
Ini bekerja seperti pesona!
WordPress meminta kredensial FTP Anda jika tidak dapat mengakses file secara langsung. Hal ini biasanya disebabkan oleh PHP yang berjalan sebagai pengguna apache (mod_php atau CGI) daripada pengguna yang memiliki file WordPress Anda.
Ini agak normal di sebagian besar lingkungan hosting bersama - file disimpan sebagai pengguna, dan Apache berjalan sebagai pengguna apache
atau httpd
. Ini sebenarnya adalah tindakan pencegahan keamanan yang baik sehingga eksploitasi dan peretasan tidak dapat mengubah file yang dihosting. Anda dapat menghindari ini dengan mengatur semua file WP ke keamanan 777, tetapi itu berarti tidak ada keamanan, jadi saya sangat menyarankan untuk tidak melakukannya. Cukup gunakan FTP, ini adalah solusi yang disarankan secara otomatis dengan alasan yang bagus.
Jika selama instalasi plugin, Wordpress menanyakan nama host atau detail FTP Anda. Kemudian ikuti langkah-langkah berikut:
Login ke server Anda dan arahkan ke / var / www / html / wordpress / . Buka wp-config.php dan tambahkan baris ini setelah define ('DB_COLLATE')
define('FS_METHOD', 'direct');
Jika Anda mendapatkan kesalahan "Tidak dapat membuat direktori". Berikan izin menulis ke direktori wordpress Anda secara rekursif sebagai
chmod -R go+w wordpress
CATATAN. Demi keamanan, cabut izin ini setelah Anda memasang plugin sebagai
chmod -R go-w wordpress
Pindah pertama ke folder instalasi Anda (misalnya)
cd /Applications/XAMPP/xamppfiles/
Sekarang kita akan mengubah direktori htdocs Anda:
sudo chown -R daemon htdocs
Masukkan kata sandi root Anda saat diminta, lalu selesaikan dengan panggilan chmod:
sudo chmod -R g+w htdocs
Saya melakukan penginstalan lokal WordPress di Ubuntu 14.04 mengikuti langkah-langkah yang diuraikan di sini dan hanya menjalankan:
sudo chown -R www-data:www-data {path_to_your_project_directory}
memecahkan masalah saya dengan mengunduh plugin. Satu-satunya alasan saya meninggalkan posting ini di sini adalah karena ketika saya mencari masalah saya di Google, ini adalah salah satu hasil pertama dan itu membawa saya ke solusi untuk masalah saya.
Semoga yang ini bisa membantu siapa pun!
Kami memiliki masalah yang sama sebagai bagian dari masalah yang lebih besar. Solusi yang disarankan dari
define('FS_METHOD', 'direct');
menyembunyikan jendela itu tetapi kemudian kami masih memiliki masalah dengan memuat tema dan peningkatan dll. Ini terkait dengan izin namun dalam kasus kami, kami memperbaiki masalah dengan berpindah dari vendor php OS mod_php ke aplikasi FastCGI vendor OS php yang lebih aman .
Cara termudah untuk mengatasi masalah ini adalah menambahkan informasi FTP berikut ke file 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 adalah path lengkap ke folder "base" (ABSPATH) dari instalasi WordPress FTP_CONTENT_DIR adalah path lengkap ke folder wp-content dari instalasi WordPress. FTP_PLUGIN_DIR adalah jalur lengkap ke folder plugin dari instalasi WordPress.
Seperti yang disebutkan oleh Niels, ini terjadi karena pengguna proses server tidak dapat menulis ke folder Wordpress.
Tapi inilah hal yang tidak dijelaskan oleh banyak artikel. Ini adalah pemilik proses php, bukan proses nginx. Jika Anda mencoba mengubah pemilik nginx, ini tidak akan menyelesaikan masalah ini.
Untuk mengatasinya, coba jalankan ps aux
untuk melihat pengguna mana yang memiliki proses php-fpm. Kemudian periksa apakah pengguna tersebut adalah pengguna yang sama dengan pemilik folder wordpress, atau setidaknya dapat menulis ke sana. Jika pengguna tidak dapat menulis padanya, Anda harus mengubah izin dan / atau kepemilikan folder; atau letakkan dua pengguna (pemilik server dan pemilik folder wordpress) dalam satu grup umum yang dapat menulis ke folder; atau ubah properti "pengguna" php.ini menjadi pengguna yang dapat menulis ke folder.
Ada banyak tanggapan serupa untuk pertanyaan ini, tetapi tidak satupun dari mereka sepenuhnya menyentuh akar penyebabnya. Sebastian SchmidKomentar postingan asli menyentuhnya tetapi tidak sepenuhnya. Inilah pendapat saya pada 2018-11-06:
Penyebab utama
Ketika Anda mencoba mengunggah plugin melalui antarmuka admin WordPress, WordPress akan memanggil fungsi yang disebut "get_filesystem_method ()" (ref: /wp-admin/includes/file.php:1549 ). Rutin ini akan mencoba menulis file ke lokasi yang dimaksud (dalam hal ini direktori plugin). Ini tentu saja bisa langsung gagal di sini jika izin file tidak diatur dengan benar untuk mengizinkan pengguna WordPress (pikirkan identitas pengguna yang menjalankan php) untuk menulis file ke lokasi yang dimaksud.
Jika file dapat dibuat, fungsi ini kemudian mendeteksi pemilik file dari file sementara, bersama dengan pemilik file dari file fungsi saat ini (ref: /wp-admin/includes/file.php:1572 ) dan membandingkan keduanya. Jika cocok maka, dalam kata-kata WordPress, "WordPress membuat file sebagai pemilik yang sama dengan file WordPress, ini berarti aman untuk mengubah & membuat file baru melalui PHP" dan plugin Anda berhasil diunggah tanpa perintah Kredensial FTP. Jika tidak cocok, Anda akan mendapatkan prompt Kredensial FTP.
Perbaikan
Pastikan identitas yang menjalankan proses php Anda adalah pemilik file untuk:
a) Semua file aplikasi WordPress, atau ...
b) Setidaknya file /wp-admin/includes/file.php
Komentar Terakhir
Saya tidak terlalu tertarik untuk secara khusus menerapkan kepemilikan file ke file.php untuk mengatasi masalah ini (rasanya agak hacky untuk sedikitnya!). Menurut saya, pada titik ini basis kode WordPress cenderung meminta kami menjalankan proses PHP di bawah prinsip pengguna yang sama dengan pemilik file untuk file aplikasi WordPress. Saya akan menerima beberapa komentar dari komunitas tentang ini.