Bagaimana saya bisa menghentikan WordPress dari meminta saya untuk memasukkan informasi FTP ketika melakukan pembaruan?


29

Bagaimana saya bisa menghentikan WordPress dari meminta saya untuk memasukkan informasi FTP ketika melakukan pembaruan?

Jawaban:


23

Jika Anda mengedit wp-config.phpfile Anda, Anda dapat memuat pengaturan FTP ini sebagai konstanta yang dibaca oleh WordPress. Ingat, pada host bersama, Anda harus memperhatikan kemungkinan implikasi keamanan. Lihat Mengeditwp-config.php untuk informasi lebih lanjut.

Pengaturan Anda akan bervariasi, tetapi ini berfungsi untuk saya dan pengaturan hosting saya. Saya telah memasukkan beberapa konstanta yang tidak digunakan, diawali:

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

Ini adalah cara paling sederhana, tetapi seperti kata pixeline di bawah ini, periksa izin file. Dua dari tiga kredensial disimpan dalam basis data, tetapi yang ketiga ditulis ke file (saya tidak ingat yang mana yang berada di atas kepala saya).
John P Bloch

12

Periksa kepemilikan file Anda. Ketika pengguna yang menjalankan apache dapat menulis ke direktori wordpress, maka proses pemutakhiran terintegrasi semua hanya bekerja tanpa ftp. Kredensial FTP adalah untuk jika server web tidak memiliki hak istimewa pada file Anda, maka wordpress meminta Anda untuk rincian FTP Anda, dan mencoba untuk menggunakannya untuk kembali ke server yang sama untuk dapat menulis file yang dibutuhkan.


1
Anda benar-benar tidak boleh mengubah kepemilikan file menjadi milik server web, karena ini merupakan risiko keamanan potensial.
Otto

... kecuali jika tidak diatur dengan benar, seperti dalam kasus saya :)
pixeline

5

Tampaknya WordPress tidak hanya memeriksa apakah direktori dapat ditulisi, tetapi juga memeriksa apakah pengguna Apache MEMILIKI direktori (atau setidaknya, jika pengguna Apache memiliki file sementara yang dibuatnya). Amati baris kode ini di /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);
}

Jadi, solusi cepat adalah dengan mengeluarkan perintah ini dan memberikan kepemilikan seluruh instalasi Wordpress ke Apache:

sudo chown -R www-data wordpress/

Di mana www-data adalah pengguna Apache, dan tentu saja wordpress adalah folder instalasi WordPress Anda.

Saya telah mendokumentasikan solusi saya di sini: https://ardeearam.wordpress.com/2013/02/03/solved-wordpress-asking-for-ftp-credentials-when-upgrading/


Tautan itu sudah mati sekarang. Berikut ini arsipnya: web.archive.org/web/20131213005955/http://rubiks.ph/…
Sam Wilson

Adakah yang bisa menjelaskan perincian: "$ allow_relaxed_file_ownership Opsional. Apakah mengizinkan Kelompok / Dunia dapat ditulisi."
Sam Wilson

@ Sam Wilson Saya sekarang telah memigrasi beberapa entri blog saya ke akun WordPress gratis. Domain lama sudah mati.
Ardee Aram

1

Ketika fine tuning Apache 2.4 melalui EasyApache4 untuk meningkatkan kecepatan memuat situs web di server Centos 7 PHP 7, saya telah mengaktifkan mod_pagespeed. Saat mengaktifkannya, ia akan secara otomatis menonaktifkan mod_ruid2 dan mod_cgi (dan mengaktifkan dua modul lainnya). Ketika menonaktifkan mod_pagespeed, itu tidak akan mengaktifkan kembali mod_ruid2 secara otomatis - itu hanya akan mengaktifkan kembali mod_cgi. Tanpa mod_ruid2 Wordpress akan meminta kredensial FTP.

Tidak perlu membuat kode wp-config.php atau mengatur izin file (berbahaya) menjadi 777. Cukup aktifkan mod_ruid2 secara manual, restart Apache dan masalah izin FTP / file terpecahkan. Wordpress dan plugin sekarang dapat diperbarui seperti biasa dan media diunggah ke galeri Wordpress. Ini bekerja segera.

Saya baru saja memeriksa bahwa ketika mengubah dari MPM Prefork ke Worker, itu akan menonaktifkan mod_ruid2. Ketika kembali dari Worker ke Prefork, itu tidak akan mengaktifkan mod_ruid2, menyebabkan masalah yang dijelaskan dalam posting ini.

Dalam kedua kasus, kuncinya adalah untuk memeriksa dan mengaktifkan mod_ruid2.

Berharap bisa membantu.


-1

1) Saya tidak setuju dengan jawaban di atas karena terlalu umum

1a) Saya hanya tidak ingin mengubah kepemilikan semua file saya secara rekursif (seperti menggunakan senapan untuk membunuh seekor nyamuk). Terutama karena ini bekerja dengan sempurna sebelumnya.

1b) Wordpress memiliki fitur "licik" tiba-tiba meminta Anda untuk kredensial ftp

2) Jadi saya mulai menggali lebih dalam menggunakan Ardee Aram. Saya pergi memeriksa file file.php dan memeriksa kepemilikannya. Sepertinya file.php tergantung pada kepemilikannya sendiri (yang salah diatur sebagai root).

Perbaiki: chown www file.php

CATATAN: Ganti www dengan apa pun distro atau pengaturan Anda (Anda bisa menggunakan ps aux | egrep "php | http" dan lihat kepemilikannya di kolom pertama.

Saya harap ini membantu orang lain dari frustrasi tentang hal ini. Saya bahkan tidak mengerti mengapa wordpress tidak "mengeluh" sejak awal dan kemudian mengusulkan untuk menggunakan alternatif FTP. Sekarang ini seperti "fitur" yang tiba-tiba diperkenalkan.


Selamat datang di WPSE, th3penguinwhisperer. Silahkan mengikuti tur ini . Dengan 'jawaban di atas', jawaban dapat mengubah urutan kapan saja sebagai akibat dari suara orang. Senang Anda mengedit posting Anda untuk menentukan jawaban siapa yang Anda rujuk sehingga jelas. Terima kasih telah menambahkan pemikiran Anda!
Tim Malone
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.