ฉันติดตั้งบล็อก WordPress ในระบบภายในของฉัน แต่เมื่อฉันพยายามเพิ่มปลั๊กอินจากผู้ดูแลระบบมันขอการเข้าถึง FTP ฉันต้องกำหนดค่าอะไรเพื่อให้ WordPress สามารถอัปโหลดโดยไม่ใช้ FTP ได้
ฉันติดตั้งบล็อก WordPress ในระบบภายในของฉัน แต่เมื่อฉันพยายามเพิ่มปลั๊กอินจากผู้ดูแลระบบมันขอการเข้าถึง FTP ฉันต้องกำหนดค่าอะไรเพื่อให้ WordPress สามารถอัปโหลดโดยไม่ใช้ FTP ได้
คำตอบ:
ลองเพิ่มโค้ดใน wp-config.php:
define('FS_METHOD', 'direct');
FS_METHOD
FILESYSTEM_METHOD
เมื่อคุณกำหนดdirect
แก้ไขไฟล์ - หรือที่เรียกว่าไม่ใช้ FTP แสดงว่าคุณกำลังบังคับให้ WordPress ลองและแก้ไขไฟล์บนไซต์โดยตรง
หากคุณใช้ Ubuntu
sudo chown -R www-data:www-data PATH_TO_YOUR_WORDPRESS_FOLDER
www-data
ดูที่นี่: codex.wordpress.org/Hardening_WordPressหรือที่นี่: stackoverflow.com/questions/18352682/…
"เมื่อใดก็ตามที่คุณใช้แผงควบคุมของ WordPress เพื่อติดตั้งอัปเกรดหรือลบปลั๊กอินโดยอัตโนมัติ WordPress จะต้องทำการเปลี่ยนแปลงไฟล์ในระบบไฟล์
ก่อนทำการเปลี่ยนแปลงใด ๆ WordPress จะตรวจสอบก่อนว่ามีการเข้าถึงเพื่อจัดการระบบไฟล์โดยตรงหรือไม่
หาก WordPress ไม่มีสิทธิ์ที่จำเป็นในการแก้ไขระบบไฟล์โดยตรงคุณจะถูกขอข้อมูลรับรอง FTP เพื่อให้ WordPress สามารถลองทำสิ่งที่ต้องการผ่าน FTP ได้ "
วิธีแก้ไข: หากต้องการทราบว่าผู้ใช้อินสแตนซ์ apache ของคุณใช้งานเป็นอย่างไรให้สร้างสคริปต์ทดสอบที่มีเนื้อหาต่อไปนี้:
<?php echo(exec("whoami")); ?>
สำหรับฉันมันเป็น daemon ไม่ใช่ www-data จากนั้นแก้ไขการอนุญาตโดย:
sudo chown -R daemon /path/to/your/local/www/folder
<?php echo(exec("id")); ?>
ซึ่งจะให้ข้อมูลกลุ่มนอกเหนือจากรหัสผู้ใช้:uid=5018(web27) gid=5012(client7) groups=5012(client7),5002(sshusers)
whoami
ดังนั้นดูข้อมูลเดียวกัน:sudo chown -R `whoami` /path/to/your/local/www/folder
บน OSX ฉันใช้สิ่งต่อไปนี้และใช้งานได้:
sudo chown -R _www:_www {path to wordpress folder}
_www คือผู้ใช้ที่ PHP ทำงานภายใต้เครื่อง Mac
(คุณอาจต้อง chmod บางโฟลเดอร์ด้วยฉันทำก่อนแล้ว แต่ก็ไม่ได้แก้ไขมันยังไม่ได้จนกว่าฉันจะใช้คำสั่ง chown จึงใช้ได้ดังนั้นฉันไม่แน่ใจว่ามันเป็นคำสั่ง chown หรือไม่ คนเดียวหรือรวมกันของ chmod และ chown)
ฉันเปลี่ยนความเป็นเจ้าของโฟลเดอร์ wordpress เป็น www-data แบบเรียกซ้ำและรีสตาร์ท apache
sudo chown -R www-data:www-data <folderpath>
มันใช้งานได้อย่างมีเสน่ห์!
จากการเข้าชมครั้งแรกใน Google :
WordPress ขอข้อมูลรับรอง FTP ของคุณเมื่อไม่สามารถเข้าถึงไฟล์ได้โดยตรง ซึ่งมักเกิดจาก PHP ทำงานในฐานะผู้ใช้ apache (mod_php หรือ CGI) แทนที่จะเป็นผู้ใช้ที่เป็นเจ้าของไฟล์ WordPress ของคุณ
นี้ค่อนข้างปกติในส่วนที่ใช้ร่วมกันในสภาพแวดล้อมที่โฮสติ้ง - ไฟล์จะถูกเก็บไว้เป็นผู้ใช้และ Apache ทำงานเป็นผู้ใช้หรือapache
httpd
นี่เป็นข้อควรระวังด้านความปลอดภัยที่ดีดังนั้นการใช้ประโยชน์และการแฮ็กจึงไม่สามารถแก้ไขไฟล์ที่โฮสต์ได้ คุณสามารถหลีกเลี่ยงสิ่งนี้ได้โดยตั้งค่าไฟล์ WP ทั้งหมดเป็น 777 ความปลอดภัย แต่นั่นหมายความว่าไม่มีความปลอดภัยดังนั้นฉันขอแนะนำอย่างยิ่ง เพียงใช้ FTP ซึ่งเป็นวิธีแก้ปัญหาที่แนะนำโดยอัตโนมัติพร้อมเหตุผลที่ดี
หากในระหว่างการติดตั้งปลั๊กอิน Wordpress จะขอชื่อโฮสต์หรือรายละเอียด FTP ของคุณ จากนั้นทำตามขั้นตอนเหล่านี้:
เข้าสู่ระบบไปยังเซิร์ฟเวอร์ของคุณและนำทางไปยัง/ var / www / html / WordPress / เปิด wp-config.php และเพิ่มบรรทัดนี้หลังจากกำหนด ('DB_COLLATE')
define('FS_METHOD', 'direct');
หากคุณได้รับข้อผิดพลาด "ไม่สามารถสร้างไดเรกทอรี" ให้สิทธิ์การเขียนไปยังไดเร็กทอรี wordpress ของคุณแบบเรียกซ้ำเป็น
chmod -R go+w wordpress
บันทึก. เพื่อความปลอดภัยให้เพิกถอนสิทธิ์เหล่านี้เมื่อคุณติดตั้งปลั๊กอินเป็น
chmod -R go-w wordpress
ก่อนอื่นให้ย้ายไปที่โฟลเดอร์การติดตั้งของคุณ (เช่น)
cd /Applications/XAMPP/xamppfiles/
ตอนนี้เรากำลังจะแก้ไขไดเรกทอรี htdocs ของคุณ:
sudo chown -R daemon htdocs
ป้อนรหัสผ่านรูทของคุณเมื่อได้รับแจ้งจากนั้นจบด้วยการโทร chmod:
sudo chmod -R g+w htdocs
ฉันติดตั้ง WordPress ในเครื่องบน Ubuntu 14.04 ตามขั้นตอนที่ระบุไว้ที่นี่และเรียกใช้:
sudo chown -R www-data:www-data {path_to_your_project_directory}
แก้ไขปัญหาของฉันเกี่ยวกับการดาวน์โหลดปลั๊กอิน เหตุผลเดียวที่ฉันออกจากโพสต์นี้เพราะเมื่อฉัน googled ปัญหาของฉันนี่เป็นหนึ่งในผลลัพธ์แรกและนำฉันไปสู่การแก้ปัญหาของฉัน
หวังว่าสิ่งนี้จะช่วยให้ทุกคน!
เรามีปัญหาเดียวกันซึ่งเป็นส่วนหนึ่งของปัญหาที่ใหญ่กว่า วิธีแก้ปัญหาที่แนะนำของ
define('FS_METHOD', 'direct');
หนังที่หน้าต่าง แต่เราก็ยังคงมีปัญหาเกี่ยวกับรูปแบบการโหลดและการอัพเกรดอื่น ๆ มันจะเกี่ยวข้องกับสิทธิ์ แต่ในกรณีที่เราได้รับการแก้ไขปัญหาโดยการย้ายจากPHP OS mod_php ผู้ขายเพื่อความปลอดภัยมากขึ้นPHP OS แอพลิเคชันของผู้ขาย
วิธีที่ง่ายที่สุดในการแก้ปัญหานี้คือเพิ่มข้อมูล FTP ต่อไปนี้ในไฟล์ 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เป็นเส้นทางแบบเต็มไปยังโฟลเดอร์ "ฐาน" (ABSPATH) ของการติดตั้ง WordPress FTP_CONTENT_DIRคือเส้นทางแบบเต็มไปยังโฟลเดอร์เนื้อหา wp ของการติดตั้ง WordPress FTP_PLUGIN_DIRคือเส้นทางแบบเต็มไปยังโฟลเดอร์ปลั๊กอินของการติดตั้ง WordPress
ตามที่ Niels กล่าวไว้สิ่งนี้เกิดขึ้นเนื่องจากผู้ใช้กระบวนการเซิร์ฟเวอร์ไม่สามารถเขียนลงในโฟลเดอร์ Wordpress
แต่นี่คือสิ่งที่หลายบทความไม่ได้อธิบาย เป็นเจ้าของกระบวนการ php ไม่ใช่กระบวนการ nginx หากคุณพยายามเปลี่ยนเจ้าของ nginx มันจะไม่แก้ปัญหานี้
ในการแก้ปัญหาให้ลองเรียกใช้ps aux
เพื่อดูว่าผู้ใช้รายใดเป็นเจ้าของกระบวนการ php-fpm จากนั้นตรวจสอบว่าผู้ใช้เป็นผู้ใช้เดียวกับเจ้าของโฟลเดอร์ wordpress หรืออย่างน้อยก็สามารถเขียนลงไปได้ หากผู้ใช้ไม่สามารถเขียนได้คุณจะต้องเปลี่ยนสิทธิ์และ / หรือความเป็นเจ้าของโฟลเดอร์ หรือใส่ผู้ใช้สองคน (เจ้าของเซิร์ฟเวอร์และเจ้าของโฟลเดอร์ wordpress) ในกลุ่มทั่วไปซึ่งสามารถเขียนลงในโฟลเดอร์ได้ หรือเปลี่ยนคุณสมบัติ php.ini "ผู้ใช้" เป็นผู้ใช้ที่สามารถเขียนลงในโฟลเดอร์
มีคำตอบที่คล้ายกันมากมายสำหรับคำถามนี้ แต่ไม่มีคำตอบใดที่ตรงกับสาเหตุที่แท้จริง ความคิดเห็นของ Sebastian Schmidในโพสต์ต้นฉบับสัมผัสได้ แต่ไม่เต็มที่ นี่คือสิ่งที่ฉันใช้ในวันที่ 2018-11-06:
สาเหตุที่แท้จริง
เมื่อคุณพยายามอัปโหลดปลั๊กอินผ่านอินเทอร์เฟซผู้ดูแลระบบของ WordPress WordPress จะเรียกใช้ฟังก์ชันที่เรียกว่า "get_filesystem_method ()" (ref: /wp-admin/includes/file.php:1549 ) รูทีนนี้จะพยายามเขียนไฟล์ไปยังตำแหน่งที่ต้องการ (ในกรณีนี้คือไดเร็กทอรีปลั๊กอิน) แน่นอนว่าอาจล้มเหลวที่นี่ทันทีหากการอนุญาตไฟล์ไม่ได้รับการตั้งค่าอย่างถูกต้องเพื่ออนุญาตให้ผู้ใช้ WordPress (คิดว่าข้อมูลประจำตัวของผู้ใช้เรียกใช้ php) เขียนไฟล์ไปยังตำแหน่งที่เป็นปัญหา
หากสามารถสร้างไฟล์ได้ฟังก์ชันนี้จะตรวจจับเจ้าของไฟล์ของไฟล์ชั่วคราวพร้อมกับเจ้าของไฟล์ของไฟล์ปัจจุบันของฟังก์ชัน (อ้างอิง: /wp-admin/includes/file.php:1572 ) และเปรียบเทียบทั้งสอง หากตรงตามนั้นในคำพูดของ WordPress "WordPress กำลังสร้างไฟล์เป็นเจ้าของเดียวกับไฟล์ WordPress นั่นหมายความว่าการแก้ไขและสร้างไฟล์ใหม่ผ่าน PHP ได้อย่างปลอดภัย" และปลั๊กอินของคุณจะอัปโหลดได้สำเร็จโดยไม่ต้องแจ้งข้อมูลรับรอง FTP หากไม่ตรงกันคุณจะได้รับพรอมต์ข้อมูลรับรอง FTP
การแก้ไข
ตรวจสอบให้แน่ใจว่าข้อมูลประจำตัวที่รันกระบวนการ php ของคุณเป็นเจ้าของไฟล์สำหรับ:
a) ไฟล์แอปพลิเคชัน WordPress ทั้งหมดหรือ ...
b) อย่างน้อยที่สุดไฟล์ /wp-admin/includes/file.php
ความคิดเห็นสุดท้าย
ฉันไม่กระตือรือร้นที่จะใช้การเป็นเจ้าของไฟล์โดยเฉพาะกับ file.php เพื่อแก้ไขปัญหานี้ (รู้สึกว่าเป็นการแฮ็คเล็กน้อยที่จะพูดน้อยที่สุด!) สำหรับฉันแล้วในตอนนี้ฐานรหัส WordPress มีแนวโน้มที่จะให้เราดำเนินการกระบวนการ PHP ภายใต้ผู้ใช้หลักเดียวกับเจ้าของไฟล์สำหรับไฟล์แอปพลิเคชัน WordPress ฉันยินดีรับฟังความคิดเห็นจากชุมชนเกี่ยวกับเรื่องนี้
ฉันประสบปัญหาเดียวกัน! ฉันได้เพิ่มโค้ดด้านล่างในไฟล์ wp-config.php แล้ว (ในบรรทัดใดก็ได้) และใช้งานได้แล้ว!
define('FS_METHOD', 'direct');