เพื่อดำเนินการตามคำขอ WordPress ต้องการเข้าถึงเว็บเซิร์ฟเวอร์ของคุณ กรุณาใส่ ftp ของคุณ


28

ฉันกำลังติดตามการเปลี่ยนการอนุญาตไฟล์« WordPress Codexแต่เมื่อฉันพยายามที่จะอัปเดตและ / หรือติดตั้งpluginและ / หรือthemeผ่านwp-adminฉันได้รับดังต่อไปนี้:

ในการดำเนินการตามที่ร้องขอ WordPress จำเป็นต้องเข้าถึงเว็บเซิร์ฟเวอร์ของคุณ โปรดป้อนข้อมูลรับรอง FTP ของคุณเพื่อดำเนินการต่อ หากคุณจำข้อมูลประจำตัวของคุณไม่ได้คุณควรติดต่อผู้ให้บริการพื้นที่เว็บของคุณ

จากระดับระบบไฟล์:

# 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/
# 

httpdทำงานเป็น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
$ 

ฉันต้องการที่จะสามารถดำเนินการตามที่ร้องขอ ( installและ / หรือupdate) ผ่าน/wp-admin โดยไม่มีข้อมูลรับรอง FTP

ฉันจะทำสิ่งนั้นได้อย่างไร


1
นี่เป็นการติดตั้ง localhost หรือไม่ ถ้าเป็นเช่นนั้นให้ดูที่: wordpress.stackexchange.com/questions/19649/…
Greg McMullen

1
@GregMcMullen ไม่มีนี้คือไม่ได้ติดตั้ง localhost และ "ยอมรับ" คำตอบจากการเชื่อมโยงที่คุณแสดงความคิดเห็นเป็นไปเปลี่ยนความเป็นเจ้าของซ้ำของไดเรกทอรี WordPress ไปnobody- นี้จะไม่ทำงานสำหรับฉันเนื่องจากการวิ่งhttpd apache
alexus

@alexus ดูเหมือนว่าไฟล์ของคุณเป็นของ root.apache ในขณะนี้ คุณลอง apache.apache แทนไม่มีใครไหม?
ทิมมาโลน

@TimMalone ไฟล์ตั้งค่า / directory เป็นapache.apacheหรือroot.apacheจะไม่สร้างความแตกต่างใด ๆ ตราบใดที่httpdวิ่งapacheและapache's uidเป็นส่วนหนึ่งของของกลุ่มก็เหมือนกันทั้งหมดเพราะสิทธิ์ของฉันตั้งค่าให้apache gid g+w
alexus

@alexus ตกลงมีอย่างอื่นให้ลองตั้งค่า FS_METHOD เป็น 'โดยตรง' ใน wp-config.php ( codex.wordpress.org/… )
ทิมมาโลน

คำตอบ:


52

เพิ่มสิ่งต่อไปนี้ใน wp-config.php:

define( 'FS_METHOD', 'direct' );

แจ้งให้เราทราบว่ามันทำงานอย่างไรสำหรับคุณ



ทำงานให้ฉันได้เว้นแต่คุณจะมีสิทธิ์ที่ไม่ดีในระบบไฟล์ Btw ฉันเพิ่มที่ด้านบนสุดของ wp-config.php
Toskan

ให้แน่ใจว่าได้อ่านโพสต์ Alexus เชื่อมโยงกับก่อนที่จะใช้วิธีนี้ วิธีนี้ใช้งานได้จริง (แก้ไขปัญหาให้ฉันได้) แต่คุณไม่ควรใช้วิธีนี้ในสภาพแวดล้อมการโฮสต์ที่ใช้ร่วมกันหรือสภาพแวดล้อมที่มีความเสี่ยงใด ๆ
JamesHoux

16

ซึ่งหมายความว่า WordPress มีสิทธิ์ จำกัด สำหรับการเปลี่ยนแปลงในโฟลเดอร์ที่ติดตั้ง

เพื่อแก้ไขปัญหานี้สิ่งที่คุณต้องทำคือให้สิทธิ์ที่จำเป็นสำหรับสิ่งเดียวกัน

เรียกใช้คำสั่งต่อไปนี้ใน Terminal / Putty / Commandline Prompt หลังจากเชื่อมต่อกับเซิร์ฟเวอร์ของคุณผ่าน SSH:

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

ชำระเงินบทความนี้สำหรับรายละเอียดแบบเต็ม


สิทธิ์ที่จะปรับอีกครั้งอ่านคำถามของฉัน)
Alexus

3
chown: ผู้ใช้ที่ไม่ถูกต้อง: 'apache: apache'
numediaweb

2
โปรดจำไว้ว่า Apache สามารถเป็นผู้ใช้ที่แตกต่างกันในรสชาติที่แตกต่างกันของ Linux ดังนั้นคุณสามารถลองกลุ่ม <ชื่อผู้ใช้> และดูว่ามันมีข้อผิดพลาดหรือไม่เนื่องจากผู้ใช้และกลุ่มสำหรับ Apache มักจะเหมือนกัน จากนั้นใช้ผู้ใช้ที่ถูกต้อง สิ่งที่พบได้บ่อยที่สุดใน Ubuntu คือ "www-data: www-data" หรือ "www: www" สำหรับไฟล์ chown-ing Apache
MontyThreeCard

2

แม้ว่ามันจะถูกต้องทั้งหมดในการเป็นเจ้าของเช่นเดียวroot:apacheกับสิทธิ์ 775 และ httpd เพื่อทำงานเป็นapacheWordpress ไม่ชอบสิ่งนี้ มันต้องการให้เจ้าของapacheเป็นต่อ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 );
  }

คุณจะ:
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';
}

หาก $ wp_file_owner เหมือนกันกับ $ temp_file_owner ให้ดำเนินการต่อ ของคุณจะติดอยู่ใน elseif ซึ่งตามความคิดเห็นไม่อนุญาตให้ลบ / สร้าง แต่อัปเดตเท่านั้น (ฉันตรวจสอบสิ่งนี้ด้วยการอัปเดตโค้ดของปลั๊กอินจากภายใน Wordpress และทำงานได้)

หมายเหตุฉันไม่ได้ดูรหัสนี้เป็นเพียงการตีความอย่างรวดเร็วของฉัน ฉันมีปัญหาเดียวกันและเมื่อฉันเปลี่ยนผู้ใช้: กลุ่มเพื่อให้ผู้ใช้ httpd นั้นเป็นเจ้าของไฟล์ด้วยก็ไม่ได้รับพร้อมท์สำหรับข้อมูลประจำตัว FTP อีกต่อไป


ใช่เปลี่ยนเจ้าของเป็นwww-dataทำงานให้ฉัน WordPress ตลก!
ankush981

1

ไม่ใช่คำตอบโดยตรง แต่อาจต้องมีการพูด - นี่คือปัญหาหนึ่งที่คุณควรหลีกเลี่ยงการแก้ไขเว้นแต่ว่าคุณกำลังพูดถึงการพัฒนาท้องถิ่นซึ่งในกรณีนี้คุณสามารถกำหนดสิทธิ์เป็น 777 ได้

เหตุผลก็คือหากเว็บเซิร์ฟเวอร์สามารถเขียนทับรหัสของคุณได้รหัสที่เป็นอันตรายใด ๆ ที่ทำงานอยู่ก็จะสามารถทำเช่นนั้นได้ ความเสี่ยงใหญ่กว่าความสะดวกในการประหยัดเพียงไม่กี่วินาทีโดยไม่ต้องพิมพ์ข้อมูลประจำตัว ftp


0

แม้ว่าคำถามไม่ใช่เรื่องใหม่อีกต่อไปฉันต้องการเพิ่มสองเซ็นต์ของฉันในปัญหานี้ด้วย

ppl จำนวนมากมี Centos (7) บนเซิร์ฟเวอร์ VPS และบรรทัดรหัสต่อไปนี้สามารถแก้ปัญหาได้

Imho มีส่วนเกี่ยวข้องกับ SELinux ซึ่งทำให้ WordPress ไม่ทำงานตามที่ต้องการ มันไปไกลเพื่ออธิบายว่าSELinuxคืออะไรและทำอะไร FYI บทนำเริ่มต้นด้วย:

Security-Enhanced Linux (SELinux) เป็นกลไกรักษาความปลอดภัยบังคับใช้ (MAC) ในเคอร์เนล

เพียง 3 ขั้นตอนในการตรวจสอบ:

  • 1 เปิดเทอร์มินัล (หรือเข้าถึงเซิร์ฟเวอร์ผ่าน SSH)
  • 2 เพิ่มบรรทัดโค้ดต่อไปนี้ chcon -R -t httpd_sys_content_t /var/www/html/wordpress
  • 3 เพิ่มรหัสบรรทัดที่สอง chcon -R -t httpd_sys_rw_content_t /var/www/html/wordpress

ไม่มีการรีบูตจากเซิร์ฟเวอร์หรือรีสตาร์ทจาก daemon ใด ๆ ที่จำเป็น

ฉันจะไม่บอกว่ามันช่วยทุกคน แต่สำหรับคนที่ไม่ได้ปิดการใช้งาน SELinux มันควรจะช่วยได้บ้าง

ไชโย

หมายเหตุ: โปรดปรับตามความต้องการของคุณเอง (หมายถึงพา ธ ไปยัง WordPress)

แก้ไข: ให้แน่ใจว่าได้ลบบรรทัดdefine("FS_METHOD", "direct");เมื่อมันถูกใช้ / wp-config.phpเพราะมันเป็นไปไม่ได้อย่างแน่นอนเมื่อบรรทัดรหัสด้านบนทำตามที่ต้องการ


0

ในกรณีของฉันฉันแก้ไขได้โดยสลับจาก GIT กลับไปเป็นโหมด FTP

ไม่มีคำเตือนเพิ่มเติม

บางทีนั่นอาจช่วยคนอื่นด้วย

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