הגדלת מגבלת ההעלאה בוורדפרס פירושה למצוא באיזו מארבע מגבלות נתקלתם
הקובץ שהועלה חורג מההנחיה upload_max_filesize שב-php.ini. כל מנהל וורדפרס פוגש את ההודעה הזו בפעם הראשונה שמישהו מנסה להעלות סרטון. התיקון הוא הגדרה של שורה אחת. הצרה היא שיש ארבעה מקומות שההגדרה יכולה לשבת בהם, הם דורסים זה את זה, ווורדפרס מוסיפה מגבלה חמישית משלה בהתקנות מרובות אתרים. הנה איך לגלות איזו מהן עוצרת אותכם ואיך לשנות אותה.
ראשית, ראו מה יש לכם
אל תנחשו. שימו קובץ בשם info.php בשורש הרשת עם שורה אחת בתוכו:
<?php phpinfo();
פתחו אותו בדפדפן וחפשו בעמוד את upload_max_filesize. הטבלה מציגה שתי עמודות, ערך מקומי וערך
ראשי. הערך הראשי הוא מה שה-php.ini של המערכת אומר; הערך המקומי הוא מה שחל על הספרייה הזו אחרי כל
הדריסות. שימו לב גם ל-post_max_size, memory_limit ו-max_execution_time, מפני שהעלאה צריכה
לעבור דרך כולם:
upload_max_filesizeהוא גודלו של קובץ אחד שהועלה.post_max_sizeהוא גודל הבקשה כולה, ולכן חייב להיות גדול לפחות כמו הקובץ, ומעט יותר.memory_limitצריך להיות גדול מ-post_max_size, אחרת ל-PHP נגמר הזיכרון בטיפול בבקשה.max_execution_timeו-max_input_timeמחליטים אם העלאה איטית נקטעת לפני שהסתיימה.
מחקו את info.php כשסיימתם. הוא מספר לעולם את תצורת ה-PHP המדויקת שלכם, ואין שום סיבה לפרסם אותה.
אפשרות ראשונה: ה-php.ini של המערכת
אם השרת שלכם, התיקון ההגון הוא קובץ המערכת. בדביאן ובאובונטו עם אפאצ'י הוא
/etc/php5/apache2/php.ini; עמוד ה-phpinfo מציין את הנתיב המדויק תחת Loaded Configuration File.
שנו את השורות האלה:
upload_max_filesize = 64M
post_max_size = 72M
memory_limit = 128M
max_execution_time = 300
max_input_time = 300
והפעילו מחדש את שרת הרשת:
sudo /etc/init.d/apache2 restart
זה חל על כל אתר במכונה, שזה או בדיוק מה שאתם רוצים או בדיוק מה שאינכם רוצים.
אפשרות שנייה: php.ini מקומי
באחסון משותף אינכם יכולים לגעת בקובץ המערכת, אבל ספקים רבים מריצים PHP כ-CGI או FastCGI, ואז PHP
קורא php.ini מהספרייה של הסקריפט שרץ. שימו קובץ עם השורות ששונו בלבד בשורש וורדפרס:
upload_max_filesize = 64M
post_max_size = 72M
memory_limit = 128M
שתי מלכודות. ראשית, הקובץ חל על הספרייה שהוא נמצא בה, לא על תת-ספריות; ההעלאה מטופלת בפועל בידי
wp-admin/async-upload.php, ולכן ייתכן שתצטרכו עותק גם ב-wp-admin/. שנית, אצל כמה ספקים הקובץ
חייב להיקרא php5.ini או .user.ini. עמוד ה-phpinfo אומר לכם אם השינוי שלכם נתפס: אם הערך
המקומי לא זז, PHP אינו קורא את הקובץ שלכם.
אפשרות שלישית: .htaccess
אם PHP רץ כמודול של אפאצ'י ולא כ-CGI, php.ini מקומי נזנח והמקבילה היא הנחיות אפאצ'י
ב-.htaccess:
php_value upload_max_filesize 64M
php_value post_max_size 72M
php_value memory_limit 128M
php_value max_execution_time 300
php_value max_input_time 300
אם PHP אינו רץ כמודול, השורות האלה גורמות לשגיאת 500 בכל האתר, מפני שאפאצ'י אינו מכיר את ההנחיה
php_value. זו הדרך המהירה לגלות באיזה מצב אתם: נסו, ואם האתר מת, הסירו את השורות והשתמשו
באפשרות השנייה. רק אחת מהאפשרויות השנייה והשלישית תעבוד אצל ספק נתון, לעולם לא שתיהן.
אפשרות רביעית: וורדפרס מרובת אתרים
הגדלתם כל מגבלת PHP, phpinfo מאשר זאת, וההעלאות עדיין נכשלות בגודל קטן יותר. אז אתם מריצים
התקנה מרובת אתרים, ולרשת יש תקרה משלה. היא נמצאת בניהול הרשת תחת Settings, כ-Max upload file size,
בקילובייטים, עם ברירת מחדל של 1500. היא גם מציגה את סוגי הקבצים המותרים, ולכן .mkv עשוי להידחות
גם כשגודלו תקין. הגדילו את שניהם שם. באותו עמוד יש בנוסף מכסת שטח לכל אתר, שסופרת את סך ההעלאות
ולא קובץ בודד, והיא עוצרת העלאות עם הודעה שונה ופחות מועילה כשאתר מתמלא.
הסדר לנסות בו
בדקו את phpinfo ראשית, כדי שתדעו אם המגבלה היא של PHP או של וורדפרס. אם היא של PHP, השתמשו בקובץ
המערכת כשאתם יכולים, ב-php.ini מקומי כש-PHP הוא CGI, וב-.htaccess כשהוא מודול. אם מגבלות PHP
כבר גדולות דיין, התשובה נמצאת בעמוד הגדרות הרשת. לעשות אותן בסדר הזה לוקח עשר דקות; לעשות אותן
בסדר אקראי הוא האופן שבו אנשים מבלים אחר צהריים שלם על שינוי של שורה אחת.