untuk melakukan tindakan yang diminta, wordpress perlu mengakses server web Anda. silakan masukkan ftp Anda

28

Saya mengikuti Mengubah Izin File «WordPress Codex , namun ketika saya mencoba memperbarui dan / atau menginstal plugindan / atau thememelalui wp-admin, saya mendapatkan yang berikut:

Untuk melakukan tindakan yang diminta, WordPress perlu mengakses server web Anda. Silakan masukkan kredensial FTP Anda untuk melanjutkan. Jika Anda tidak mengingat kredensial Anda, Anda harus menghubungi host web Anda.

dari tingkat sistem file:

# ls -ld wp-content/ wp-content/plugins/ wp-content/themes/
drwxrwxr-x.  6 root apache 4096 Jun  2 12:01 wp-content/
drwxrwxr-x. 28 root apache 4096 Jun  2 00:00 wp-content/plugins/
drwxrwxr-x. 11 root apache 4096 May 11 16:34 wp-content/themes/
# 

httpdberjalan sebagai apache:

$ ps auxw | grep httpd
root     20158  0.0  0.1 533080 26192 ?        Ss   15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20233  0.0  0.2 612608 34908 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20234  0.0  0.2 538772 46904 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20235  0.0  0.1 536832 24268 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20236  0.0  0.2 626272 35640 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20237  0.0  0.0 535296  9592 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20322  0.0  0.1 537088 26620 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20380  0.0  0.2 626060 33816 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20429  0.0  0.1 538216 29184 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20447  0.0  0.2 629380 43180 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20448  0.0  0.2 626172 35224 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
alexus   24073  0.0  0.0 112652   972 pts/9    R+   15:13   0:00 grep --color=auto httpd
$ 

Saya ingin dapat melakukan tindakan yang diminta ( installdan / atau update) melalui /wp-admin tanpa kredensial FTP.

Bagaimana saya bisa melakukan itu?

alexus
sumber
1
Apakah ini instalasi localhost? Jika demikian, lihat: wordpress.stackexchange.com/questions/19649/…
Greg McMullen
1
@GregMcMullen tidak, ini BUKAN penginstalan localhost & jawaban "diterima" dari tautan yang Anda komentari adalah mengubah kepemilikan direktori wordpress secara rekursif nobody- ini tidak akan berfungsi untuk saya karena httpdberjalan sebagai apache.
alexus
@alexus Sepertinya file Anda dimiliki oleh root.apache saat ini. Apakah Anda mencoba apache.apache bukan siapa-siapa?
Tim Malone
@TimMalone pengaturan file / direktori sebagai apache.apacheatau root.apachetidak akan membuat perbedaan, selama httpdberjalan sebagai apache, dan apache's uidmerupakan bagian dari apache gid' kelompok s, itu semua sama, karena izin saya set ke g+w.
alexus
@alexus Ok, sesuatu yang lain untuk dicoba - set FS_METHOD untuk 'mengarahkan' di wp-config.php ( codex.wordpress.org/... )
Tim Malone

Jawaban:

52

Tambahkan yang berikut ini ke wp-config.php:

define( 'FS_METHOD', 'direct' );

Biarkan saya tahu cara kerjanya untuk Anda.

Narendra Solanki
sumber
bekerja untuk saya kecuali Anda memiliki izin buruk di sistem file. Btw saya menambahkannya di bagian paling atas dari wp-config.php
Toskan
Pastikan untuk membaca posting yang terhubung dengan Alexus sebelum menggunakan metode ini. Metode ini pasti berhasil (ini memecahkan masalah bagi saya), tetapi Anda seharusnya tidak menggunakan metode ini di lingkungan hosting bersama atau lingkungan berisiko apa pun di mana Anda dapat membahayakan keamanan dengan melakukan ini.
JamesHoux
16

Ini berarti WordPress memiliki izin terbatas untuk membuat perubahan pada folder yang telah diinstal.

Untuk memperbaikinya, yang perlu Anda lakukan adalah memberikan izin yang diperlukan untuk hal yang sama.

Jalankan Perintah berikut di Terminal / Putty / Commandline Prompt Anda setelah terhubung ke Server Anda melalui SSH:

sudo chown -R apache:apache /var/www/html

Periksa artikel ini untuk detail lengkap.

Syamraj K
sumber
izin baik-baik saja, baca kembali pertanyaan saya)
alexus
3
chown: pengguna tidak valid: 'apache: apache'
numediaweb
2
Ingat, Apache dapat menjadi pengguna yang berbeda dalam berbagai rasa Linux. Jadi, Anda dapat mencoba grup <nama pengguna> dan melihat apakah ada kesalahan atau tidak, karena pengguna dan grup untuk Apache biasanya sama. Kemudian gunakan pengguna yang benar. Yang paling umum di Ubuntu adalah "www-data: www-data" atau "www: www" untuk chown-ing file Apache.
MontyThreeCard
2

Meskipun benar-benar benar untuk memiliki kepemilikan root:apachedengan izin 775, dan httpd dijalankan sebagai apache, Wordpress tidak suka ini. Ia ingin pemiliknya apache, sesuai wp-admin/includes/file.php:

    // Attempt to determine the file owner of the WordPress files, and that of newly created files
   $wp_file_owner = $temp_file_owner = false;
   if ( function_exists('fileowner') ) {
      $wp_file_owner = @fileowner( __FILE__ );
      $temp_file_owner = @fileowner( $temp_file_name );
  }

Milik Anda adalah:
wp_file_owner = root
temp_file_owner = apache

if ( $wp_file_owner !== false && $wp_file_owner === $temp_file_owner ) {
    // WordPress is creating files as the same owner as the WordPress files,
    // this means it's safe to modify & create new files via PHP.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'file_owner';
} elseif ( $allow_relaxed_file_ownership ) {
    // The $context directory is writable, and $allow_relaxed_file_ownership is set, this means we can modify files
    // safely in this directory. This mode doesn't create new files, only alter existing ones.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'relaxed_ownership';
}

Jika $ wp_file_owner sama dengan $ temp_file_owner maka lanjutkan. Milik Anda akan terperangkap di elseif, yang menurut komentar tidak mengizinkan hapus / buat, tetapi hanya pembaruan (saya memverifikasi ini dengan memperbarui kode plugin dari dalam Wordpress, dan itu berhasil).

Catatan saya tidak melihat kode secara ekstensif, ini hanya interpretasi cepat saya. Saya memiliki masalah yang sama dan sekali saya beralih pengguna: grup sehingga pengguna httpd juga pemilik file, itu tidak meminta kredensial FTP lagi.

w00t
sumber
Yup, mengubah pemilik menjadi www-databekerja untuk saya. WordPress yang lucu!
ankush981
1

Bukan jawaban langsung, tetapi mungkin harus dikatakan - ini adalah satu masalah yang harus Anda hindari untuk menyelesaikan kecuali Anda berbicara tentang pengembangan lokal dalam hal ini Anda hanya dapat mengatur izin ke 777.

Alasannya adalah jika server web dapat menimpa kode Anda, maka setiap kode jahat yang berjalan di dalamnya akan dapat melakukannya juga. Risikonya jauh lebih besar daripada kenyamanan menghemat beberapa detik dengan tidak harus mengetik kredensial ftp.

Mark Kaplun
sumber
0

Meskipun pertanyaannya bukan yang baru lagi saya ingin menambahkan dua sen saya pada masalah ini juga.

Banyak ppl memiliki Centos (7) di server VPS mereka dan baris kode berikut dapat memecahkan masalah mereka.

Imho semua ada hubungannya dengan SELinux yang menahan WordPress dari melakukan pekerjaannya seperti yang diharapkan. Lebih jauh menjelaskan apa SELinux itu dan apa fungsinya. FYI pengantar dimulai dengan:

Linux yang Ditingkatkan Keamanan (SELinux) adalah mekanisme keamanan kontrol akses wajib (MAC) yang diterapkan dalam kernel.

Hanya 3 langkah untuk mengikuti:

  • 1 Buka terminal (atau akses server melalui SSH)
  • 2 Tambahkan baris kode berikut chcon -R -t httpd_sys_content_t /var/www/html/wordpress
  • 3 Tambahkan baris kode kedua chcon -R -t httpd_sys_rw_content_t /var/www/html/wordpress

Tidak perlu reboot dari server atau restart dari daemon apa pun yang diperlukan.

Saya tidak akan mengatakan itu membantu semua orang, tetapi bagi mereka yang tidak menonaktifkan SELinux itu harus meringankan.

Tepuk tangan

Catatan: Silakan sesuaikan dengan kebutuhan Anda sendiri (artinya jalur ke WordPress)

sunting: pastikan untuk menghapus baris define("FS_METHOD", "direct");ketika sedang digunakan wp-config.phpkarena itu benar-benar tidak jalan ketika baris kode di atas melakukan seperti yang diinginkan.

Charles
sumber
0

Dalam kasus saya, saya memecahkan masalah ini dengan beralih dari GIT kembali ke mode FTP.

Tidak ada lagi peringatan.

Mungkin itu akan membantu orang lain juga.

MarkPraschan
sumber