WordPress-də Maksimal Yükləmə Fayl Ölçüsünü Artırın
WordPress yükləmə limitini üç parametr idarə edir və onların hamısı bir-biri ilə uyğun olmalıdır. Faktiki limit upload_max_filesize, post_max_size və serverin sorğu limitindən ən kiçiyidir.
Nəşr olundu
WordPress yükləmə limitini üç parametr idarə edir və onların hamısı bir-biri ilə razılaşmalıdır. Faktiki limit upload_max_filesize, post_max_size və veb serverinizin sorğu limitindən ən kiçiyidir. Birini artırıb qalan ikisini aşağı saxlasanız, heç nə dəyişməyəcək — məhz buna görə də əksər insanlar öz düzəlişlərinin “işləmədiyi” qənaətinə gəlir. Əvvəlcə cari rəqəmlərinizi WordPress maksimal yükləmə ölçüsü aləti ilə yoxlayın; bu alət WordPress-in bildirdiyi eyni dəyərləri oxuyur və hansının sizi əngəllədiyini göstərir.
Limit niyə mövcuddur və harada yerləşir
WordPress yükləmə limitini təyin etmir. O, yalnız onu bildirir. “The uploaded file exceeds the upload_max_filesize directive in php.ini” mesajını gördüyünüzdə, bu mesaj birbaşa PHP-dən gəlir.
Yükləməni üç ayrı dəyər idarə edir və əsl tavan onlardan hansı ən aşağıdırsa, odur:
upload_max_filesize(PHP) — PHP-nin qəbul edəcəyi ən böyük tək fayl.post_max_size(PHP) — ən böyük ümumi POST gövdəsi. Faylınız POST sorğusunun içərisində digər form sahələri ilə birlikdə gedir, ona görə də bu dəyərupload_max_filesize-dan böyük olmalıdır.- Veb serverinin gövdə limiti — Nginx-də
client_max_body_size, Apache-dəLimitRequestBody. Bu limit tamamilə PHP-dən kənarda yaşayır, buna görə də yalnız PHP-yə aid düzəlişlər Nginx arxasında səssizcə uğursuz olur.
Dördüncü dəyər olan max_execution_time ölçünü məhdudlaşdırmır, lakin zəif bağlantıda ləng böyük yükləməni ötürmə zamanı yarımçıq dayandıra bilər. Bu, ayrı bir simptomdur, ölçü tavanının bir hissəsi deyil.
Tələ budur: siz upload_max_filesize = 256M təyin edirsiniz, yenidən yükləyirsiniz, amma yenə də 100 MB-lıq faylı yükləyə bilmirsiniz — çünki post_max_size hələ də 8M-dir. PHP sorğunu faylı yoxlamağa belə başlamadan, ümumi gövdə üzərində rədd edir. Limit sizi görməzdən gəlmədi. Başqa bir limit onu daha əvvəl tutdu.
Necə düzəltmək, ardıcıllıqla
Ən çox nəticə verəndən son çarəyə doğru işləyin.
1. php.ini faylını redaktə edin (düzgün yer). Saytınızın həqiqətən yüklədiyi faylı tapın — <?php phpinfo(); olan bir səhifəni işlədin və “Loaded Configuration File”-ı oxuyun, yaxud hostinq provayderinizdən soruşun. Hər iki PHP dəyərini təyin edin və post_max_size-ı upload_max_filesize-dan böyük saxlayın:
upload_max_filesize = 256M
post_max_size = 260M
max_execution_time = 300
PHP-FPM-i (sudo systemctl restart php8.2-fpm) və ya Apache-ni yenidən başladın. PHP prosesi yenidən başlayana qədər dəyişikliklər heç bir təsir göstərmir.
2. php.ini-yə girişiniz yoxdur? .htaccess istifadə edin (yalnız Apache + mod_php). WordPress kök qovluğunuzdakı .htaccess-ə əlavə edin:
php_value upload_max_filesize 256M
php_value post_max_size 260M
php_value max_execution_time 300
Bu, yalnız PHP Apache modulu kimi işlədikdə çalışır. PHP-FPM, CGI və ya FastCGI altında php_value 500 xətası verir — bu uğursuzluq rəqəmin səhv olduğunu deyil, sizin yanlış yolda olduğunuzu bildirir. .user.ini-yə keçin:
upload_max_filesize = 256M
post_max_size = 260M
3. Veb server limitini artırın — hamının unutduğu addım. Nginx-də PHP həddindən artıq böyük sorğunu görmür belə; Nginx əvvəlcə 413 Request Entity Too Large qaytarır. Server blokunuzda:
client_max_body_size 256M;
sudo nginx -t && sudo systemctl reload nginx ilə yenidən yükləyin. Əgər Nginx-dəsinizsə və PHP düzəlişləriniz “heç bir təsir göstərmədisə”, səbəb demək olar ki, həmişə budur.
Hər dəyişiklikdən sonra bildirilən dəyərləri yenidən yoxlayın. Maksimal yükləmə ölçüsü aləti sizə yeni faktiki tavanı bildirəcək və qurğunuz üçün dəqiq kod parçasını yaradacaq, beləliklə üçündən hansının hələ də aşağı olduğunu təxmin etməyəcəksiniz.
Nə etməməli
wp-config.php-ni redaktə edib limitin qalxacağını gözləməyin. Geniş yayılmış və kopyalanan sətir bloq yazılarının iddia etdiyini etmir:
@ini_set( 'upload_max_filesize' , '256M' );
upload_max_filesize PHP_INI_PERDIR-dir. Onu iş vaxtı ini_set() ilə PHP-dən dəyişmək mümkün deyil. O, yalnız php.ini, .htaccess və ya .user.ini-dən yeni dəyərləri qəbul edir — heç vaxt tətbiq kodundan. Bu sətir xətasız işləyir və heç nə etmir, bu da onu WordPress-də ən əminliklə təkrarlanan səhv məsləhətlərdən birinə çevirir.
@ini_set('post_max_size', ...) da yapışdırmayın — eyni məhdudiyyət, eyni səssiz təsirsizlik.
WP_MEMORY_LIMIT təyin edib onu yükləmə limiti sanmayın. Bu, kodun işləməsi üçün PHP-nin yaddaş tavanını idarə edir. Serverin nə qədər böyük faylı qəbul etdiyi ilə əlaqəsi yoxdur.
Bir fayl ilə dayanmayın. Ən çox rast gəlinən uğursuzluq təkcə upload_max_filesize-ı dəyişib düzəlişin işləmədiyini elan etməkdir. Hər üçünü dəyişin və post_max_size-ı upload_max_filesize-dan yuxarı saxlayın.
“Ehtiyat üçün” limitləri absurd dərəcədə yüksək təyin etməyin. 2 GB-lıq limit resurs-tükənməsi problemlərinə dəvət göndərir və kömək etmir — əgər həqiqətən çox-gigabaytlıq fayllara ehtiyacınız varsa, onları brauzerdən kənarda yükləyin (SFTP və ya parçalı-yükləmə plugini), tək bir PHP POST-dan keçirmək əvəzinə.
Hələ də ilişib qaldınız?
Hər üç dəyər artırılıbsa və siz yenə də divara dəyirsinizsə, sorğu serverinizdən yuxarıda bir yerdə məhdudlaşdırılır: CDN və ya proksi (Cloudflare-in idarə paneli yükləmə gövdəsi ölçüsünü öz üzərində məhdudlaşdırır), sizin php.ini-nizi görməzdən gələn idarə olunan hostinq platforma limiti, yaxud hələ yenilənməmiş bir .user.ini — o, PHP-nin user_ini.cache_ttl dəyərinə tabedir, ona görə də siz saxladıqdan sonra bir neçə dəqiqə gecikə bilər. Faylda yazdığınızı deyil, serverin həqiqətən nə bildirdiyini təsdiqləyin və hələ də aşağı olan qatı düzəldin. Bildirilən rəqəm nəhayət hədəfinizə uyğun gəldikdə, yükləmə işləyir.