แก้ไขปัญหา WordPress ไม่สามารถเขียนทับไฟล์บางไฟล์ได้บน linux server


วิธีเช็คว่าเว็บเซิร์ฟเวอร์ของคุณใช้ user อะไร

ให้รันคำสั่งนี้:

ps aux | grep httpd

จะได้ผลลัพธ์ประมาณนี้:

apache   1234  0.0  ...  /usr/sbin/httpd

หรือถ้าใช้ Nginx:

ps aux | grep nginx

ตัวอย่างคำสั่งที่ถูกต้อง:

ถ้าเป็น Apache (บน CentOS/RHEL):

โดยทั่วไปจะใช้ user: apache

chown -R apache:apache wp-content

ถ้าเป็น Nginx (บน CentOS/RHEL):

chown -R nginx:nginx wp-content

***วิธีแก้ไข***

1. เปลี่ยนเจ้าของไฟล์ให้ถูกต้อง

ในโฟลเดอร์ WordPress หลัก (เช่น /var/www/html/blog):

cd /var/www/html/blog
chown -R apache:apache .

จุด . ด้านหลังคือให้เปลี่ยนทุกไฟล์ในโฟลเดอร์ปัจจุบัน

2. ตั้งสิทธิ์ให้กับไฟล์และโฟลเดอร์

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

คำสั่งนี้จะ:

  • ตั้ง 755 ให้โฟลเดอร์ทั้งหมด (สามารถเข้าและเขียนได้โดย Apache)
  • ตั้ง 644 ให้ไฟล์ทั้งหมด (อ่านได้ทุกคน แต่เขียนได้เฉพาะเจ้าของ)

3. ลองอัปเดต WordPress อีกครั้ง

กลับไปที่ WordPress Dashboard → แดชบอร์ด > อัปเดต
แล้วคลิกอัปเดตใหม่อีกครั้ง

สรุป:

รันคำสั่งนี้ทีละบรรทัด:

cd /var/www/html/blog
chown -R apache:apache .
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

,