ฉันสามารถติดตั้ง / อัปเดตปลั๊กอิน WordPress โดยไม่ให้การเข้าถึง FTP ได้หรือไม่


564

ฉันใช้WordPressบนเซิร์ฟเวอร์ที่ใช้งานอยู่ซึ่งใช้SFTPโดยใช้SSH เท่านั้นคีย์เท่านั้น

ฉันต้องการติดตั้งและอัปเกรดปลั๊กอิน แต่ดูเหมือนว่าคุณจะต้องป้อนข้อมูลเข้าสู่ระบบ FTP เพื่อติดตั้งปลั๊กอิน มีวิธีในการติดตั้งและอัปเกรดปลั๊กอินโดยการอัปโหลดไฟล์ด้วยตนเองแทนที่จะให้ WordPress จัดการกับกระบวนการทั้งหมดหรือไม่?


3
ใช่คุณสามารถ. เพียงใช้ cPanel หรือเครื่องมืออัปโหลดไฟล์อื่น ๆ ที่คุณมี อัปโหลดปลั๊กอินบีบอัดแล้วแตกออกwp-content/plugins/จากแดชบอร์ด wp ไปที่แท็บปลั๊กอินและเปิดใช้งาน
WPDev

หากใช้ a VPSควรลองทำสิ่งนี้: stackoverflow.com/a/44137965/3160597
azerafati

@WPDev หากความคิดเห็นของคุณถูกระบุว่าเป็นคำตอบฉันจะโหวตมันอีกครั้งนั่นเป็นประโยชน์มากที่สุด
Tensigh

คำตอบ:


771

WordPress จะแจ้งให้คุณทราบถึงข้อมูลการเชื่อมต่อ FTP ของคุณในขณะที่พยายามติดตั้งปลั๊กอินหรืออัปเดต WordPress หากไม่สามารถเขียน/wp-contentโดยตรง มิฉะนั้นหากเว็บเซิร์ฟเวอร์ของคุณมีสิทธิ์เขียนเพื่อเข้าถึงไฟล์ที่จำเป็นมันจะดูแลการปรับปรุงและการติดตั้งโดยอัตโนมัติ วิธีนี้ไม่ต้องการให้คุณเข้าถึง FTP / SFTP หรือ SSH แต่ต้องการให้คุณตั้งค่าการอนุญาตไฟล์เฉพาะบนเว็บเซิร์ฟเวอร์ของคุณ

มันจะลองใช้วิธีการต่าง ๆ ตามลำดับและถอยกลับไปที่ FTP หากวิธีการ Direct และ SSH ไม่พร้อมใช้งาน

https://github.com/WordPress/WordPress/blob/4.2.2/wp-admin/includes/file.php#L912

WordPress จะพยายามเขียนไฟล์ชั่วคราวไปยังของคุณ /wp-contentไดเรกทอรีหากสิ่งนี้สำเร็จจะเปรียบเทียบความเป็นเจ้าของของไฟล์กับ uid ของตัวเองและหากมีการจับคู่มันจะช่วยให้คุณใช้วิธี 'โดยตรง' ในการติดตั้งปลั๊กอินธีมหรือการปรับปรุง

ทีนี้ถ้าด้วยเหตุผลบางอย่างที่คุณไม่ต้องการพึ่งพาการตรวจสอบอัตโนมัติสำหรับวิธีการที่ระบบไฟล์ใช้คุณสามารถกำหนดค่าคงที่'FS_METHOD'ในwp-config.phpไฟล์ของคุณนั่นก็คือ'direct', 'ssh', 'ftpext' or 'ftpsockets'และมันจะใช้วิธีนั้น โปรดทราบว่าหากคุณตั้งค่านี้เป็น 'โดยตรง' แต่ผู้ใช้เว็บ (ชื่อผู้ใช้ที่เว็บเซิร์ฟเวอร์ของคุณทำงาน) ไม่มีสิทธิ์ในการเขียนที่เหมาะสมคุณจะได้รับข้อผิดพลาด

โดยสรุปถ้าคุณไม่ต้องการ (หรือคุณไม่สามารถ) เปลี่ยนการอนุญาตใน wp-content เพื่อให้เว็บเซิร์ฟเวอร์ของคุณมีสิทธิ์ในการเขียนจากนั้นเพิ่มไฟล์นี้ในไฟล์ wp-config.php ของคุณ:

define('FS_METHOD', 'direct');

สิทธิ์อธิบายที่นี่:


30
ฉันต้องทำ: sudo chown -R www-data wp-content รวมถึงการอนุญาตให้เขียน
mikermcneil

5
การใช้งานgetmyuidon line 876 นั้นไม่ถูกต้องที่นี่เนื่องจากส่งคืน UID ของเจ้าของสคริปต์ไม่ใช่ตัวเรียกใช้สคริปต์ posix_getuidผมเชื่อว่ามันควรจะเป็น
cmbuckley

7
ความหมายของความปลอดภัยของวิธีการนี้มีอะไรบ้าง
Jahmic

1
หากคุณต้องการดูว่าผู้ใช้รายใดกำลังทำงาน php อยู่คุณสามารถใช้สิ่งนี้: print_r(posix_getpwuid(posix_geteuid())); คุณสามารถเพิ่มรหัสในwp-configไฟล์
Ivan V.

3
chown -R www-data wordpress/wp-contentไม่ได้ผลสำหรับฉัน แต่chown -R www-data wordpressได้
Martin

251

ตามที่ระบุไว้ก่อนหน้านี้ไม่มีการแก้ไขใบอนุญาตทำงานอีกต่อไป คุณต้องเปลี่ยน perms ตามและใส่ต่อไปนี้ในของคุณwp-config.php:

define('FS_METHOD', 'direct');

11
แม้ว่าฉันจะมีสิทธิ์ที่ถูกต้องเช่นที่เว็บเซิร์ฟเวอร์สามารถเขียนไปยังไดเรกทอรีปลั๊กอินและไดเรกทอรี wp-content การตั้งค่านี้แก้ไขได้ดังนั้นผู้ดูแลระบบไม่ได้แจ้งขอการตั้งค่า FTP / SFTP สำหรับการอัปเดตปลั๊กอิน ขอบคุณ. ทำงานได้อย่างสมบูรณ์แบบ
Sean McCleary

7
ฉันต้องทำสิ่งนี้อย่างชัดเจนเช่นกัน
julien_c

5
พวกเขาทำสิ่งนี้เป็นข้อกำหนดเมื่อใด
danjp

ฉันยังต้องพึ่งพาการตั้งค่านี้บน WP ที่ติดตั้งโดยแพ็คเกจเดเบียนบน Ubuntu 12.04 มิฉะนั้นการอนุญาตไม่เป็นไรเนื้อหา WP มีสิทธิ์ rwx สำหรับกลุ่ม www-data ...
alci

2
ดูเพื่อให้แน่ใจว่าสิ่งต่อไปนี้ไม่ได้อยู่ในไฟล์ wp-config.php: define ('FS_METHOD', 'ftpext'); ในกรณีนี้การกำหนด define ('FS_METHOD', 'direct'); ที่ด้านล่างของไฟล์จะไม่ทำงาน คุณจะต้องลบหรือแสดงความคิดเห็นออกคำจำกัดความ ('FS_METHOD', 'ftpext'); สิ่งนี้อาจเกิดขึ้นได้หากคุณย้ายจากเซิร์ฟเวอร์อื่นที่ต้องการ FTP
Doug

104

แค่อยากจะเพิ่มว่าคุณต้องไม่เคยตั้งค่าwp-contentได้รับอนุญาตหรือได้รับอนุญาตจากโฟลเดอร์ใด ๆ 777ที่จะ

นี่คือสิ่งที่ฉันต้องทำเพื่อ:

1) ฉันตั้งค่าความเป็นเจ้าของโฟลเดอร์ wordpress (ซ้ำ) ให้กับผู้ใช้ apache เช่น:

# chown -R apache wordpress/

2) ฉันเปลี่ยนความเป็นเจ้าของกลุ่มของโฟลเดอร์ wordpress (ซ้ำ) เป็นกลุ่ม apache เช่น:

# chgrp -R apache wordpress/

3) ให้สิทธิ์เจ้าของเต็มกับไดเรกทอรีเช่น:

# chmod u+wrx wordpress/*

และนั่นก็เป็นงาน wp-contentโฟลเดอร์ของฉันมี755สิทธิ์ btw

TL; DR เวอร์ชัน:

# chown -R apache:apache wordpress
# chmod u+wrx wordpress/*

11
การตั้งค่า wordpress ของคุณเป็นของ apache นั้นไม่ดีเท่ากับการตั้งค่า 777 ผลลัพธ์เหมือนกัน: สคริปต์ php ใด ๆ สามารถเปลี่ยนไฟล์ wordpress ของคุณได้ ตัวเลือกที่ดีที่สุดคือการ chown apache: apache ชั่วคราวติดตั้งการอัปเดตของคุณและ chown กลับเป็นต้นฉบับหรือใช้เคล็ดลับ ssh / ftp
woens

11
ฉันไม่เห็นด้วย. มันไม่เหมือนกับการตั้งค่าเป็น 777 ผู้ใช้ในเครื่องจะมีสิทธิ์การเขียนถ้าคุณตั้งค่าการอนุญาตเป็น 777 นั่นเป็นปัญหาในตัวเอง และในขณะที่คุณถูกต้อง apache นั้นสามารถแก้ไขไฟล์ php ได้ในตอนนี้ซึ่งเป็นเจตนาอันดับแรก (เพื่ออัปเดตหรือติดตั้งอะไรก็ได้) หากใครบางคนจัดการที่จะนำไฟล์ php ที่เป็นอันตรายในเซิร์ฟเวอร์นั่นเป็นปัญหาใหม่ทั้งหมดและการ chowning ให้กับผู้ใช้ที่แตกต่างกันจะช่วยเล็กน้อย
sufinawaz

2
ขอบคุณมันช่วยวันด้วยเพราะฉันไม่มีสิทธิ์ FTP แต่มีเพียงการเข้าถึงรูท
shasi kanth

4
นี่เป็นสิ่งเดียวที่ช่วยฉัน! ขอบคุณมากหลังจากหลายปีในการพัฒนาเว็บไซต์ Wordpress นี่เป็นปัญหาคลาสสิก!
acidghost

1
หากคุณกำลังใช้งาน WordPress ภายใต้โครงสร้างที่ผิดปกติให้ติดสิ่งนี้ในไฟล์ PHP เพื่อตรวจสอบว่า Apache กำลังใช้งานใคร (อูบุนตูตัวอย่างเช่นคือ www-data): <? php echo exec ('whoami'); ?>
ความจำเป็น

70
  1. ในการwp-config.phpเพิ่มdefine('FS_METHOD', 'direct');
  2. ทำให้เซิร์ฟเวอร์สามารถเขียนไดเรกทอรี,wp-content/wp-content/plugins/
  3. ติดตั้งปลั๊กอิน (คัดลอกปลั๊กอิน dir ลงในwp-content/pluginsdir)

ทำงานกับรุ่น 3.2.1


4
ทำงานบนเวอร์ชัน 4.0 เช่นกัน
Meetai.com

1
คุณต้องเพิ่มตัวเลือกนี้ แต่คุณจะต้องเปลี่ยน perms สำหรับ wp-content / plugins
John Kloian

นี่คือขั้นตอนที่คุณควรทำเพื่อติดตั้งปลั๊กอินอย่างชัดเจนโดยไม่ได้รับพร้อมท์สำหรับข้อมูล FTP คุณสามารถทำตามขั้นตอนในการอนุญาตให้เข้มงวดกับ WordPress จากนั้นทำการเปลี่ยนแปลงทั้งสองนี้และคุณควรจะรักษาความปลอดภัยเป็นส่วนใหญ่
bozdoz

50

เปิดwp-config.phpไฟล์และเพิ่มบรรทัดต่อไปนี้:

define('FS_METHOD', 'direct');

มันใช้งานได้สำหรับฉัน ... ขอบคุณ


ใช้งานได้ (และจำเป็นต้องมี) ในเวอร์ชั่น 5.4 ในเดือนมิถุนายน 2020
Ralf Hein

34

เพียงแค่เปลี่ยนอย่างรวดเร็วเป็นwp-config.php

define('FS_METHOD','direct');

เพียงเท่านี้คุณก็เพลิดเพลินไปกับการอัปเดต WordPress ของคุณโดยไม่ต้อง ftp !

วิธีอื่น:

มีโฮสต์ออกมีที่จะป้องกันวิธีนี้จากการทำงานเพื่อความสะดวกในการอัปเดต WordPress ของคุณ โชคดีที่มีวิธีการอื่นในการป้องกันไม่ให้ศัตรูนี้แจ้งชื่อผู้ใช้และรหัสผ่าน FTP ของคุณ

อีกครั้งหลังจากการประกาศล็อกอิน MYSQL ในไฟล์ wp-config.php ของคุณเพิ่มต่อไปนี้:

define("FTP_HOST", "localhost");
define("FTP_USER", "yourftpusername");
define("FTP_PASS", "yourftppassword");

22

ในการเปิดใช้งานการใช้ SSH2 สำหรับการอัปเดตและการอัปโหลดธีมของคุณคุณต้องสร้างคีย์ SSH ของคุณและติดตั้งโมดูล PHP SSH จากนั้น WordPress จะตรวจพบว่าคุณมี SSH2 และคุณจะเห็นตัวเลือกอื่น (SSH2) ปรากฏขึ้นเมื่อทำการอัปโหลด / อัปเกรด

1. ) ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งโมดูล PHP สำหรับเดเบียนแล้ว:

sudo apt-get install libssh2-php

2. ) สร้างคีย์ SSH โดยเพิ่มวลีรหัสผ่านหรือไม่ก็ได้:

ssh-keygen
cd  ~/.ssh
cp id_rsa.pub authorized_keys

3. ) เปลี่ยนการอนุญาตเพื่อให้ WordPress สามารถเข้าถึงคีย์เหล่านั้น:

cd ~
chmod 755 .ssh
chmod 644 .ssh/*

ตอนนี้คุณจะได้รับตัวเลือก SSH2 เมื่อทำการอัปโหลด / อัปเกรด / ปลั๊กอิน การเชื่อมต่อ WP SSH

4. ) เพื่อความสะดวกเพิ่มคุณสามารถตั้งค่าเริ่มต้นในของคุณwp-config.phpและสิ่งนี้จะเติมข้อมูลรับรอง SSH ล่วงหน้าในหน้าต่างอัปโหลด WordPress

define('FTP_PUBKEY','/home/<user>/.ssh/id_rsa.pub');
define('FTP_PRIKEY','/home/<user>/.ssh/id_rsa');
define('FTP_USER','<user>');
define('FTP_PASS','passphrase');
define('FTP_HOST','domain.com');

'ข้อความรหัสผ่าน' เป็นตัวเลือกหากคุณไม่ได้ตั้งค่าข้อความรหัสผ่านในระหว่างssh-kengenนั้น จากนั้นอย่าเพิ่มเข้าไปwp-config.php

นี่เป็นการแก้ไขปัญหาของฉัน และฉันก็ไม่ต้องทำอะไรchownเลย แต่ฉันได้เห็นวิธีนี้อ้างอิงในที่อื่น

อ้างอิง:


ฉันไม่ใช่ผู้เชี่ยวชาญด้านความปลอดภัยและฉันรู้ว่า wordpress รวมความสามารถนี้และคิดว่ามันโอเค .... แต่ฉันไม่รู้สึกดีเกี่ยวกับเรื่องนี้ ... 1. มีบัญชีผู้ใช้ ssh ที่ไม่มีข้อความรหัสผ่าน (ทุกคนที่เคยได้รับ ไพรเวตคีย์สามารถล็อกอินจากระยะไกลได้ทุกเวลาที่ต้องการโดยไม่ต้องใช้รหัสผ่าน) และ 2. เก็บข้อความรหัสผ่านไว้ในข้อความธรรมดา (ดู 1) มันทำให้ฉันนึกถึง rsh ขึ้นอยู่กับความคิดที่ว่า "ไม่มีใครสามารถเข้าถึงไฟล์ในเครื่องของฉัน" เพื่อป้องกันรหัสผ่านเครือข่ายไปยังระบบ
ดอนสดใส

ฉันแน่ใจว่าคุณสามารถสร้างข้อความรหัสผ่านและไม่เพิ่มลงใน wp-config.php จากนั้นคุณจะต้องพิมพ์ลงไปเมื่อคุณได้รับกล่องโต้ตอบข้อมูลการเชื่อมต่อ
JacquelineIO

มันเป็นช่องโหว่ความปลอดภัยขนาดใหญ่ที่ใช้กุญแจส่วนตัวที่ไม่ได้เข้ารหัสด้วยวิธีนี้ แต่คุณสามารถลดปัญหานี้ได้โดยใส่ "จาก = อะไรก็ตาม" ลงในบรรทัดที่เกี่ยวข้องใน authorized_keys
markhahn

นี่เป็นสิ่งที่ดี แต่ดูเหมือนว่าจะไม่มีความสามารถในการ php7: core.trac.wordpress.org/ticket/35517
Supaiku

21

โดยปกติคุณสามารถอัปโหลดปลั๊กอินไปยังwp-content\pluginsไดเรกทอรี หากคุณไม่สามารถเข้าถึงไดเรกทอรีนี้ผ่าน SFTP ฉันกลัวว่าคุณจะติดขัด


ใช่เพียงแค่วางไว้ใน wp-content / plugins
ceejayoz

17

คุณสามารถทำให้มันง่ายมากโดยพิมพ์คำสั่งต่อไปนี้ที่ command promt

sudo chown -R www-data:www-data your_folder_name

หรือคัดลอกและวางรหัสต่อไปนี้ในไฟล์ wp-config.php ของคุณ

define('FS_METHOD', 'direct');

โดยที่ "your_folder_name" เป็นโฟลเดอร์ที่ติดตั้ง WordPress ของคุณไว้ในโฟลเดอร์นี้


16

รันรหัสต่อไปนี้ใน terminal

sudo chown -R www-data /var/www

สำหรับรายละเอียดเพิ่มเติมเยี่ยมชม Wordpress บน Ubuntu ติดตั้งปลั๊กอินโดยไม่ต้องเข้าถึง FTP


4
ไม่ใช่ความคิดที่ดีที่จะให้ www-data เข้าถึงทุกสิ่งในไดเรกทอรีของคุณ
WoodyDRN

ตัวแปรที่เหมาะกับฉัน:sudo chown -R www-data /var/www/html
Jules Colle

15

เพิ่มรหัสต่อไปนี้เพื่อ wp-config

define('FS_METHOD', 'direct');

FS_METHODบังคับใช้วิธีการระบบแฟ้ม มันควรจะโดยตรง, ssh2, ftpext หรือ ftpsockets โดยทั่วไปคุณควรเปลี่ยนแปลงสิ่งนี้หากคุณประสบปัญหาการอัพเดท หากคุณเปลี่ยนและไม่ช่วยให้เปลี่ยนกลับ / ลบ ภายใต้สถานการณ์ส่วนใหญ่การตั้งค่าเป็น 'ftpsockets' จะทำงานหากวิธีที่เลือกโดยอัตโนมัติไม่ทำงาน

(การตั้งค่าหลัก)บังคับโดยตรงให้ใช้คำร้องขอ Direct File I / O จากภายใน PHP ซึ่งเต็มไปด้วยการเปิดปัญหาด้านความปลอดภัยบนโฮสต์ที่ตั้งค่าไว้ไม่ดีซึ่งจะถูกเลือกโดยอัตโนมัติเมื่อเหมาะสม

(การตั้งค่ารอง) "ssh2"คือการบังคับให้ใช้ส่วนขยาย SSH PHP หากติดตั้ง

(การตั้งค่าที่ 3) "ftpext"คือการบังคับใช้การขยาย FTP PHP สำหรับการเข้าถึง FTP และสุดท้าย

(การตั้งค่าที่ 4) "ftpsockets"ใช้ประโยชน์จาก PHP Sockets Class สำหรับการเข้าถึง FTP

สำหรับการเยี่ยมชมข้อมูลเพิ่มเติม: http://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants


15

หากคุณใช้Ubuntuวิธีแก้ปัญหาที่รวดเร็วสำหรับฉันคือการให้ความเป็นเจ้าของแก่ผู้ใช้Apache (ค่าเริ่มต้นคือ www-data) ดังนี้:

cd your_wordpress_directory
sudo chown -R www-data wp-content
sudo chmod -R 755 wp-content

2
อย่าให้สิทธิ์ดำเนินการกับไฟล์ที่ไม่ต้องการ
Burhan Ali

13

เปลี่ยนจากphp_modเป็นfastcgiด้วยcgi& SuEXECเปิดใช้งาน ได้ผลสำหรับฉัน

ถ้าไม่ได้ทำงานพยายามที่จะเปลี่ยนwp-contentไป775เป็นราก:

chmod -R 775 ./wp-content

เพิ่มไปที่wp-config.php:

define('FS_METHOD', 'direct');

ฉันหวังว่ามันจะได้ผล


12

WordPress 2.7 ให้คุณอัปโหลดไฟล์ zip โดยตรง (มีลิงก์ที่ด้านล่างของหน้าปลั๊กอิน) - ไม่จำเป็นต้องเข้าถึง FTP นี่เป็นคุณลักษณะใหม่ใน 2.7 และใช้งานได้กับปลั๊กอินเท่านั้น (ยังไม่มีธีม)


BTW การอัปเกรดทำได้ง่ายยิ่งขึ้น - คุณจะเห็นไอคอนระบุว่ามีเวอร์ชั่นใหม่และคุณคลิก "อัปเกรด" แล้วปล่อยให้มันทำสิ่งนั้น ดีมาก. แม้แต่แกน WordPress ก็อัพเกรดด้วยวิธีนี้ - ฉันเพิ่มจาก 2.7 เป็น 2.7.1 โดยไม่มีการอัปโหลดอะไรเลย
D. Lambert

สิ่งนี้เป็นจริงเฉพาะเมื่อคุณมีการตั้งค่าการอนุญาตไฟล์เพื่อให้ผู้ใช้เว็บเซิร์ฟเวอร์ / PHP สามารถเขียนได้ หากไม่เป็นเช่นนั้นระบบจะขอให้คุณรับข้อมูลรับรอง FTP / SFTP ดูคำตอบของ stereointeractive.com
Dave Forgac

9

เรียกคืนเธรดเก่าอีกครั้ง แต่มีปลั๊กอินตัวใหม่ที่เรียกว่าSSH SFTP Updater Supportที่เพิ่มความสามารถของ SFTP โดยไม่จำเป็นต้องแก้ไขwp-config.phpไฟล์ของคุณ นอกจากนี้การใช้ SFTP ของ Wordpress ขึ้นอยู่กับโมดูล PHP ที่ค่อนข้างคลุมเครือซึ่งมักไม่ได้เปิดใช้งานบนเซิร์ฟเวอร์ ปลั๊กอินนี้บรรจุปลั๊กอิน PHP SFTP ที่แตกต่างกันดังนั้นคุณไม่จำเป็นต้องกำหนดค่าใด ๆ ในฝั่ง Apache

ฉันพบปัญหามากมายที่จะได้รับการสนับสนุนจาก SFTP ในการทำงานปลั๊กอินนี้แก้ไขปัญหาทั้งหมดและยอดเยี่ยมมาก


9

ลองสิ่งนี้

1) ในการwp-config.phpเพิ่มdefine('FS_METHOD', 'direct');

2) ตั้งค่าwp-contentไดเรกทอรีเป็น777แบบเขียนได้

3) ตอนนี้ติดตั้งปลั๊กอิน


6
สวัสดีโมฮันขอบคุณมากสำหรับตัวเลือก FS_METHOD นี่คือสิ่งที่ฉันกำลังมองหา ฉันจำเป็นต้องพูดต่อไปนี้: ไม่มีไดเรกทอรีใดควร 777 ยกเว้นกรณีที่เป็นพิเศษ สิ่งนี้ทำให้ไดเรกทอรีโลกอ่านได้เขียนได้และปฏิบัติได้ นี่เป็นความเสี่ยงด้านความปลอดภัยขนาดใหญ่ โซลูชันที่เหมาะสมคือการค้นหาว่าผู้ใช้ apache ของคุณคือใคร (www-data, _www หรือคล้ายกัน) ผู้ใช้นี้ต้องการการเข้าถึงแบบอ่านและเขียนในเนื้อหา wp หรือต้องการความเป็นเจ้าของเหนือ dir นี้ ('sudo chown www-data wp-content') ไม่มีสิทธิ์ดำเนินการ ฉันขอโทษที่ทื่อนิดหน่อย แต่ 777 อันตรายสำหรับเนื้อหาเว็บ
Ruben

8
อย่า 777 ไดเรกทอรีอัพโหลดของคุณนี้ไม่ปลอดภัยและไม่ควรตอบ!
MKN Web Solutions

8

คำตอบจาก stereointeractive ครอบคลุมตัวเลือกทั้งหมด แค่อยากจะพูดถึงวิธีอื่นในการใช้ FTP ฉันเดาว่าเหตุผลที่คุณไม่อนุญาตให้เข้าถึง FTP นั้นเพื่อความปลอดภัย วิธีหนึ่งในการจัดการปัญหาด้านความปลอดภัยเหล่านั้นคือการเรียกใช้เซิร์ฟเวอร์ FTP ของคุณฟังใน 127.0.0.1 เท่านั้น

สิ่งนี้ช่วยให้คุณใช้ FTP จากภายใน WordPress และคุณจะสามารถติดตั้งปลั๊กอินในขณะที่ไม่เปิดเผยไปยังส่วนอื่น ๆ ของโลก สามารถใช้กับแอปพลิเคชั่นเว็บยอดนิยมอื่น ๆ เช่น Joomla! และ Drupal นี่คือสิ่งที่เราทำกับอุปกรณ์ BitNamiและเซิร์ฟเวอร์คลาวด์และทำงานได้ค่อนข้างดี


8

ผมขอแนะนำปลั๊กอิน SSH SFTP Updater สนับสนุน เพิ่งแก้ไขปัญหาทั้งหมดของฉันด้วย ... โดยเฉพาะอย่างยิ่งเกี่ยวกับการรับปลั๊กอินเพื่อลบผ่านผู้ดูแลระบบ เพียงติดตั้งตามปกติและครั้งต่อไปที่คุณได้รับแจ้งจาก WordPress สำหรับรายละเอียด FTP จะมีเขตข้อมูลเพิ่มเติมให้คุณคัดลอก / วางคีย์ SSH ส่วนตัวหรืออัปโหลดไฟล์ PEM ของคุณ

ปัญหาเดียวที่ฉันมีคือการทำให้จดจำคีย์ (ลองทั้งสองวิธี) ไม่ชอบความคิดที่จะค้นหาและใส่ทุกครั้งที่ฉันต้องการลบปลั๊กอิน แต่อย่างน้อยมันก็เป็นการแก้ไขที่มั่นคงสำหรับตอนนี้


1
"จะมีฟิลด์เพิ่มเติมสำหรับให้คุณคัดลอก / วางคีย์ SSH ส่วนตัวของคุณ" .... ฉันไม่ใช่อัจฉริยะด้านความปลอดภัย แต่ ... ไม่ใช่จุดรวมของคีย์ ssh ส่วนตัวที่คุณไม่ต้องส่งข้ามเครือข่าย ?
ดอนสดใส

8

ใช่ติดตั้งปลั๊กอินใน WordPress โดยตรง

  1. คัดลอกโฟลเดอร์ปลั๊กอินและวางในโฟลเดอร์ปลั๊กอิน WordPress
  2. ไปที่ด้านผู้ดูแลระบบ (/ ทดสอบ / wp-admin) จากนั้นไปที่ลิงค์ปลั๊กอินและตรวจสอบชื่อของปลั๊กอิน
  3. เปิดใช้งานปลั๊กอินเพื่อติดตั้งปลั๊กอินอย่างง่ายดาย

ตัวเลือกอื่น ๆ

  1. สร้างไฟล์ zip สำหรับรหัสปลั๊กอิน
  2. ไปที่ด้านผู้ดูแลระบบ (/ ทดสอบ / wp-admin) จากนั้นไปที่ลิงก์ปลั๊กอินจากนั้นคลิกที่เพิ่มใหม่จากนั้นเรียกดูโฟลเดอร์ซิปปลั๊กอินและติดตั้งปลั๊กอินจากนั้นออกตัวเลือกเปิดใช้งานปลั๊กอินดังนั้นจึงเปิดใช้งานปลั๊กอินและ เปิดใช้งานปลั๊กอิน

6

เป็นไปได้ที่จะใช้ SFTP หรือ SSH เพื่ออัปเดตปลั๊กอินใน WordPress โดยอัตโนมัติ แต่คุณต้องมีส่วนขยาย ssh2 pecl คุณสามารถหาวิธีการทำได้โดยใช้บทช่วยสอนต่อไปนี้


6

เราใช้ SFTP กับ SSH (ทั้งในการพัฒนาและเซิร์ฟเวอร์ที่ใช้งานอยู่) และฉันได้ลองใช้ (ไม่ยากเกินไป) ในการใช้คุณสมบัติการอัปโหลด WordPress ฉันเห็นด้วยกับ Toby อัปโหลดปลั๊กอินของคุณไปยังwp-content/pluginsไดเรกทอรีแล้วเปิดใช้งานจากที่นั่น


6

ฉันเห็นผู้คนจำนวนมากแนะนำให้ตั้งค่าการอนุญาตเป็น 777 ฉันมีปัญหาแบบเดียวกันเมื่อ 2 วันก่อนและทั้งหมดที่ฉันทำคือเพิ่มสิ่งนี้ลงในเนื้อหาของ wp

define('FS_METHOD', 'direct');

และ

กำหนดสิทธิ์เป็น 775 สำหรับโฟลเดอร์ปลั๊กอิน

วิธีนี้ช่วยแก้ไขปัญหาในการขอเข้าสู่ระบบ / รหัสผ่านเข้าใช้ FTP

ก่อนหน้านั้นฉันต้องเพิ่มปลั๊กอินด้วยตนเองโดยเพิ่มไฟล์. zip ลงในโฟลเดอร์ปลั๊กอินแล้วไปที่wp-admin/pluginsและต้องติดตั้ง


5

ลองนี้ตรวจสอบว่าได้รับสิทธิ์ที่ถูกต้องให้กับโฟลเดอร์ wp-content

แก้ไข wp-config.php เพิ่มบรรทัดต่อไปนี้

define('FS_METHOD', 'direct');

chmod ไดเรกทอรี "wp-content" ไปที่ www-data สำหรับการเข้าถึงแบบเต็ม

ตอนนี้ลองติดตั้งปลั๊กอิน


4

ใช่คุณสามารถทำได้

คุณต้องเพิ่ม

define('METHOD','direct');

ใน wpconfig ของคุณ แต่วิธีนี้จะไม่ดีกว่าเพราะมันมีช่องโหว่ด้านความปลอดภัย

ขอบคุณ


3

วิธีที่ 1: คุณสามารถตั้งค่านี้: 1. ใน wp-config.php คุณต้องเขียนบรรทัดนี้

define('FS_METHOD', 'direct'); 

หมายเหตุ: ใส่สิ่งนี้หลังจาก define ('DB_CHARSET', 'utf8mb4')

  1. ตั้งค่าการอนุญาต wp-content หรือการอนุญาตแบบเรียกซ้ำแบบเต็ม 777 คุณสามารถอนุญาตผ่าน filezilla เขียนคลิกที่ไดเรกทอรี> การอนุญาต> ตรวจสอบการอ่าน - เขียนและดำเนินการและตรวจสอบ Recurse ไปยังไดเรกทอรีย่อย

    วิธีที่ 2:

หรือคุณสามารถตั้งค่านี้

define("FTP_HOST", "localhost");
define("FTP_USER", "yourftpusername");
define("FTP_PASS", "yourftppassword");

ภายในเดือนกุมภาพันธ์ 2020 เป็นคำสั่งที่ชัดเจนNote: put this after define( 'DB_CHARSET', 'utf8mb4' ).
Osify

2

การตั้งค่า ftp หรือแม้กระทั่งการเชื่อมต่อ SFTP หรือ chmod 777 เป็นวิธีที่ไม่ดีที่จะทำสิ่งอื่นนอกเหนือจากสภาพแวดล้อมในท้องถิ่น การเปิดแม้แต่วิธี SFTP จะแนะนำความเสี่ยงด้านความปลอดภัยที่ไม่จำเป็น

สิ่งที่จำเป็นต้องมีคือสิทธิ์ที่เขียนได้สำหรับ / wp-content / uploads & / wp-content / plugins / โดยเจ้าของไดเรกทอรีเหล่านั้น (linux ls -la จะแสดงกรรมสิทธิ์ให้คุณ)

ผู้ใช้ apache ดีฟอลต์ที่รันคือ www-data

chmod 777 อนุญาตให้ผู้ใช้บนเครื่องสามารถแก้ไขไฟล์เหล่านั้นได้ไม่ใช่เฉพาะผู้ใช้ apache / php thread

SFTP ถ้าคุณยังไม่ได้ใช้มันจะแนะนำอีกจุดหนึ่งของความล้มเหลวที่อาจเกิดขึ้นจากแหล่งภายนอก ในขณะที่คุณต้องการการเข้าถึงโดยผู้ใช้โลคัลที่รันกระบวนการ apache / php เพื่อทำให้วัตถุประสงค์เสร็จสมบูรณ์

ไม่เห็นใครสร้างจุดเหล่านี้ดังนั้นฉันคิดว่าฉันจะเสนอข้อมูลนี้เพื่อช่วยแก้ไขปัญหาความปลอดภัย WP อย่างต่อเนื่องของเราทางออนไลน์


2

นี่คือวิธีการง่ายๆ

ดำเนินการคำสั่งต่อไปนี้

สิ่งนี้จะเปิดใช้งานโมดูล mod_rewrite ของคุณสำหรับ Apache

$sudo a2enmod rewrite

คำสั่งนี้จะเปลี่ยนเจ้าของโฟลเดอร์เป็น www-data

$sudo chown -R www-data [Wordpress Folder Location]

หลังจากที่คุณดำเนินการคำสั่งข้างต้นคุณสามารถติดตั้งชุดรูปแบบใด ๆ โดยไม่ต้อง FTP


1
สำหรับ Nginx เพียงรันคำสั่งที่สองsudo chown -R www-data [Wordpress Folder Location]
srokatonie

@ srokatonie ขอบคุณสำหรับความคิดเห็น สิ่งนี้จะเป็นประโยชน์สำหรับทุกคน
Manuja Jayawardana


1

เหตุผลเดียวที่ WordPress ไม่อนุญาตให้คุณอัปโหลดปลั๊กอินใด ๆ ผ่านทางแดชบอร์ดผู้ดูแลระบบ WordPress เมื่อคุณไม่ได้รับอนุญาตให้เขียนในไดเรกทอรี / wp-content จำไว้ว่าไดเรกทอรี wordpress / wp-content ของคุณต้องการระดับสิทธิ์ 0755 มีหลายวิธีในการเปลี่ยนระดับสิทธิ์ของโฟลเดอร์

การเปลี่ยนการอนุญาตของไฟล์โดยใช้ cPanel:

ไปที่ตัวจัดการไฟล์ที่เปิดโฟลเดอร์ HTML สาธารณะที่เว็บไซต์เวิร์ดเพรสของคุณควรจะเป็นหรือเปิดไดเรกทอรีรากของเว็บไซต์หากเว็บไซต์ของคุณอยู่ในโฟลเดอร์อื่น ในไดเรกทอรีราก WordPress ของคุณนำทางไปยังโฟลเดอร์ wp-content; ในตอนท้ายของแถวโฟลเดอร์ wp-content กล่องสุดท้ายจะมีการอนุญาตไฟล์สำหรับโฟลเดอร์นี้ ตรวจสอบให้แน่ใจว่าแก้ไขระดับสิทธิ์ของโฟลเดอร์เป็น 0755 และเสร็จแล้ว

การเปลี่ยนการอนุญาตของไฟล์โดยใช้เทอร์มินัล SSH:

ในเทอร์มินัลของคุณค้นหารูทของเว็บไซต์ WordPress ซึ่งในกรณีของฉันคือ / var / www / html ดังนั้นเพื่อย้ายไปยังไดเรกทอรีรูท WordPress ให้ป้อนคำสั่งต่อไปนี้:

cd /var/www/html 

ตอนนี้คุณอยู่ในไดเรกทอรีรากของ WordPress ซึ่งมีโฟลเดอร์ / wp-content ที่ต้องการ ดังนั้นหากต้องการเปลี่ยนการอนุญาตไฟล์ให้พิมพ์คำสั่งต่อไปนี้:

sudo chmod wp-content 755 

สิ่งนี้จะเปลี่ยนการอนุญาตไฟล์ไดเร็กทอรี / wp-content ของคุณเป็น 0755

ตอนนี้คุณจะไม่ได้รับข้อความแสดงข้อผิดพลาดในการอัพโหลดปลั๊กอิน WordPress ผ่าน FTP


0

วิธีที่ดีที่สุดในการติดตั้งปลั๊กอินโดยใช้ SSH คือ WPCLI

โปรดทราบว่าการเข้าถึง SSH จำเป็นต้องใช้คำสั่ง WP CLI ก่อนใช้ให้ตรวจสอบว่าติดตั้ง WP CLI ที่โฮสต์เซิร์ฟเวอร์หรือเครื่องของคุณ

วิธีตรวจสอบ: wp --version [มันจะแสดงเวอร์ชั่นของ wp cli ที่ติดตั้ง]

หากไม่ได้ติดตั้งวิธีติดตั้ง: ก่อนติดตั้ง WP-CLI โปรดตรวจสอบให้แน่ใจว่าสภาพแวดล้อมตรงตามข้อกำหนดขั้นต่ำ:

สภาพแวดล้อมคล้าย UNIX (OS X, Linux, FreeBSD, Cygwin); การสนับสนุนที่ จำกัด ในสภาพแวดล้อม Windows PHP 5.4 หรือใหม่กว่า WordPress 3.7 หรือใหม่กว่า รุ่นที่เก่ากว่ารุ่นล่าสุดของ WordPress อาจมีฟังก์ชั่นการใช้งานที่ลดลง

หากคะแนนด้านบนเป็นที่พอใจโปรดปฏิบัติตามขั้นตอน: URL อ้างอิง: WPCLI

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
[ download the wpcli phar ]

php wp-cli.phar --info [ check whether the phar file is working ]

chmod +x wp-cli.phar [ change permission ]
sudo mv wp-cli.phar /usr/local/bin/wp [ move to global folder ]
wp --info [ to check the installation ]

ตอนนี้ WP CLI พร้อมติดตั้งแล้ว

ตอนนี้คุณสามารถติดตั้งปลั๊กอินที่มีอยู่ใน WordPress.org โดยใช้คำสั่งต่อไปนี้:

wp install plugin plugin-slug
wp delete plugin plugin-slug
wp deactivate plugin plugin-slug

หมายเหตุ: wp cli สามารถติดตั้งเฉพาะปลั๊กอินที่มีอยู่ใน wordpress.org

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.