Maksimum yükleme dosyası boyutunu değiştirme


513

Erişemediğim bir bilgisayarda barındırılan bir web sitem var. İnsanların 30 MB'a kadar büyük mp3 dosyaları yüklemelerine izin veren bir yükleme formum var. Sunucu tarafı komut dosyam PHP ile yapılıyor.

Her dosya yüklemeye çalıştığımda, dosyanın izin verilen maksimum boyutu aştığını iddia eden bir hata alıyorum, bu yüzden boyutu artırmam gerekiyor. Web'deki araştırmam, .htaccesserişimim olmayan dosyayı değiştirmeyi önerdi , bu yüzden işe yaramayacak. Diğerleri, köküme php.iniçalışmayan özel bir dosya eklemem gerektiğini önerdi . Başka öneriniz var mı?

Yanıtlar:


877

Php.ini içindeki upload_max_filesizeve post_max_sizeiçindeki değeri ayarlamanız gerekir :

; Maximum allowed size for uploaded files.
upload_max_filesize = 40M

; Must be greater than or equal to upload_max_filesize
post_max_size = 40M

Php.ini dosyalarını değiştirdikten sonra, yeni yapılandırmayı kullanmak için HTTP sunucunuzu yeniden başlatmanız gerekir.

Eğer php.ini'nizi değiştiremezseniz, şansınız kalmaz. Bu değerleri çalışma zamanında değiştiremezsiniz; php.ini dosyasında belirtilen değerden daha büyük dosya yüklemeleri, yürütme çağrınıza ulaştığında başarısız olur ini_set.

Bkz . Çekirdek php.ini yönergelerinin açıklaması .


4
php.ini dosyasının saklandığı varsayılan yolu biliyor musunuz?
Yo Momma

1
Linux'ta genellikle / etc / php / veya bu satırlar boyunca bir şey bulunur. Paylaşılan bir sunucudaysanız, barındırma sağlayıcınız kullanıcı başına bir php.ini dosyası sağlayacak kadar cömert olmadığı sürece şansınız kalmaz.
Johannes Gorset

4
Windows altında WAMP kullanıyorsanız, WAMP simgesi> PHP -> php.ini'yi tıklayarak düzenleyebilirsiniz. Debian'da, yapılandırma dosyam / etc / php5 / apache2 dizininde.
meagar

19
Daha yüksek bir boyut ayarlamanızı öneririm post_max_size. Gönderilen alanların toplam boyutu dosya boyutundan daha büyük olabilir, bu nedenle 40 MB'lık bir dosyayı yükleyen birinin kenar durumu varsa, aşılması nedeniyle başarısız olur post_max_size.
acme

2
Lütfen memory_limit öğesinin yükleme boyutunu da sınırladığını unutmayın.
Daniel

151

Bir .htaccessdosya aracılığıyla değiştirebilirsiniz .

.htaccessdosyalar, dosyalarınızla aynı dizinde saklanır .php. Bu klasör ve tüm alt klasörler için yapılandırmayı değiştirirler. Bunları .htaccess, istediğiniz dizinde bir dosya oluşturarak kullanabilirsiniz (veya varsa değiştirebilirsiniz).

Aşağıdakiler, yükleme sınırınızı artırmanızı sağlayacaktır (sunucu sağlayıcı PHP yapılandırma değişikliklerine izin veriyorsa .htaccess).

php_value upload_max_filesize 40M
php_value post_max_size 42M

3
Her zaman işe yaramıyor gibi görünüyor. Geliştiricilerimde .htaccess'te uygun değeri ayarlayarak iş yaptım. Ancak paylaşılan barındırma bu ayar çalışmıyor ancak hata iletisi izin verilen maksimum yükleme boyutu .htaccess içinde ayarladığınız değer olduğunu gösteriyor. Böylece çok garip bir durum meydana gelir.
Eugeniu Torica

5
Görünüşe göre bunu .htaccess'e eklemek sadece Apache çalıştırıyorsanız işe yarar. Deneyin ve benim için iyi çalışıyor.
AngelGris

Php.ini dosyasındaki bu 2 satır önerilmemişse bu işe yaramaz :; Kullanıcı tanımlı php.ini (.htaccess) dosyalarının adı. Varsayılan ".user.ini" dir ;user_ini.filename = ".user.ini" ; Bu özelliği devre dışı bırakmak için bu seçeneği boş değere ayarlayın;user_ini.filename =
Alan Deep

Apache CGI veya Fast CGI kullanıyorsanız, 500 hataya neden olacağını belirtmek gerekir. Bunu <IfModule mod_php7.c> </IfModule> içine sarın
Shardj

59

Aynı sorunu yaşadım ve bir .user.ini dosyası oluşturdum ve yükleme komut dosyasının bulunduğu dizine koydum. Bu dosyanın içinde bu iki değeri ayarlayın:

  upload_max_filesize = 40M

  post_max_size = 40M

ve benim için harika çalıştı!


2
Harika. Fastcgi etkinken de çalışır. PHP5.3 veya daha yenisini gerektirir.
Ciantic

1
Tamam, başka hiçbir şey işe yaramadığında bu paylaşılan bir sunucu üzerinde çalıştı. Büyük bulmak.
Edward Potter

55

Ayrıca, ini_set işlevini de kullanabilirsiniz (yalnızca 5.3'ün altındaki PHP sürümü için):

ini_set('post_max_size', '64M');
ini_set('upload_max_filesize', '64M');

@Acme'nin dediği gibi, php 5.3 ve üzeri sürümlerde bu ayarlar PHP_INI_PERDIR direktifleri olduğundan ini_set kullanılarak ayarlanamazlar. Bunun yerine user.ini dosyasını kullanabilirsiniz.


38
Son PHP sürümlerinde bu ini ayarları yalnızca PHP_INI_PERDIR şeklindedir , bu yüzden bunları kodunuzda ayarlayamazsınız. Daha fazla ayrıntı için buraya bakın.
acme

46

İni dosyasını bulmak için önce

php -i | grep -i "loaded configuration file"

Sonra dosyayı açın ve değiştirin

upload_max_filesize = 2M
post_max_size = 2M

2M'yi istediğiniz boyutla değiştirmek, örneğin 100M.

Biraz daha fazla bilgi içeren bir blog yayınım da var http://www.seanbehan.com/how-to-increase-or-change-the-file-upload-size-in-the-php-ini- dosya-for-wordpress


5
Dosyayı şu şekilde gösterir, /etc/php5/cli/php.iniancak yapılandırma dosyam /etc/php5/apache2/php.ini. Bir çeşit yanıltıcı.
Fredrick Gauss

2 php.ini dosyası vardır ... ve cevapta bu komutla hangisini kullandığınızı gösterir! Bu yüzden orada etkili olabilmek için değişiklikler yapmanız gerekiyor!
lewis4u

40

Geçmişte aynı sorun var .. ve ben .htaccessdosya yoluyla düzeltildi

Sizin aracılığınızla php konfigürasyonunda değişiklik .htaccessyaptığınızda, IfModuleetikete konfigrasyonlar koymalısınız , diğer dahili sunucu hatası ortaya çıkacaktır.

Bu bir örnek, benim için iyi çalışıyor:

<IfModule mod_php5.c>
   php_value upload_max_filesize 40M
   php_value post_max_size 40M
</IfModule>

Ve daha fazla anlamak istiyorsanız bu php referanstır. http://php.net/manual/en/configuration.changes.php


5
Geçersiz kılma yetenekleriniz varsa.
AbsoluteƵERØ

3
PHP.7'yi desteklemek için aşağıdakilerle aynı bloğu ekleyin: <IfModule mod_php7.c>
Mostafa

16

.user.iniPHP dosya komut dosyalarının bulunduğu dizinde adlandırılan bir dosya oluşturarak bu sorunu çözdüm (bu dizindeki herhangi bir PHP komut dosyasının yeni dosya boyutu sınırını aldığı anlamına gelir)

İçeriği .user.ini:

upload_max_filesize = 40M
post_max_size = 40M

2
Bu benim için bir çözüm. Sadece iyi çalışıyor. Codeignitor gibi bir çerçeve kullanıyorsanız, ".user.ini" dizin.php ile aynı yerde olmalıdır
Dude

Teşekkürler. Bu benim için işe yarıyor. Bu, php.ini'ye erişiminizin olmadığı paylaşılan barındırma için idealdir. Sadece PHP 5.3'ten beri kullanılabilir olduğunu ekleyebilirim
yacsha

6

Ben de aynı problemi yaşadım. Genellikle önerilen üç yolu denedim:

  1. functions.php
  2. php.ini
  3. .htaccess

hiçbiri benim sorunum çözüldü. Godaddy kullanıyorum ve önerilen bir çözümle karşılaştım:

  1. lazım Web Hosting , ardından Manage
  2. Altında Yazılım seçmek Seç PHP versiyonunu
  3. Tablonun sağ üst köşesinde yazı tipi renginde bulunan PHP Seçeneklerine Geç'i seçin : mavi
  4. Çoğunlukla, muhtemelen upload_max_filesize = 2M
  5. Şimdi, değiştirmekten çekinmeyin
  6. Kaydet düğmesini tıkladığınızdan emin olun !
  7. Şimdi wp-admin panelinize gidin, Medya'yı ve ardından Ekle'yi seçin

İşte bu kadar! Şimdi farklı bir maksimum yükleme dosyası boyutunuz var :)


6

birçok kez ben web zekâ paylaşılan barındırma php.ini dosyalarındaki ayarları değiştirmek için izin vermedi fark ettim. biri bile .htaaccess dosyası bile sandık olamaz. böyle bir durumda şeyleri izlemeyi deneyebilirsiniz

ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);

6

cevaplar biraz eksik, yapmanız gereken 3 şey var

php kurulumunuzun php.ini dosyasında (not: CLI, apache veya nginx için isteyip istemediğinize bağlı olarak, manipüle etmek için doğru php.ini dosyasını bulun. nginx için genellikle /etc/php/7.1/fpm7.1 sürümünüze bağlı olarak bulunur. /etc/php/7.1/apache2)

post_max_size=500M

upload_max_filesize=500M

memory_limit=900M

veya diğer değerleri ayarlayın. Bir apache yüklüyse apache'yi veya nginx kullanıyorsanız nginx için php-fpm'yi yeniden başlatın / yeniden yükleyin .


5

Buraya 2 sentimi eklemek istiyorum.

Paylaşılan webhosting kullanıyorum ve bu sorunu birçok kez ele aldım, kendi başıma çözmeye çalıştım ama boşuna. Sonunda çeşitli web kaynaklarını kontrol ederek ve barındırma hizmeti sağlayıcımla iletişim kurarak çözmeyi başardım. Sorularım "Nasıl php değerini değiştirebilir vardı memory_limitpaylaşılan webhosting içinde?", "Ben php değerini değiştirebilir nasıl upload_max_filesizepaylaşılan webhosting içinde?", "Nasıl php değerini değiştirebilir max_input_varspaylaşılan webhosting içinde?", "Nasıl php değerini değiştirebilir max_execution_timeiçinde paylaşılan web barındırma? "," max_input_timePaylaşılan web barındırmadaki php değerini nasıl değiştirebilirim ? " php.ini dosyasını yapılandırarak veya değiştirerek.htaccess dosyayı . Onları değiştirmeye çalıştım ama sorunlar ortaya çıktı. Sonunda hosting sağlayıcımla temasa geçtim ve php'mi yerli olarak ayarladığım ortaya çıktı, php 5.6 olarak değiştirdiler,

"PHP'niz 'yerel' moda ayarlandı, bu da bu değerleri geçersiz kılamayacağınız anlamına geliyor. Sizi sadece '5.6' olarak değiştirdim.

Bundan sonra web sitemi ftp Filezilla ile bağladım, ayrıca hem gizli dosyaları göstermek için hem ftp hizmetinizi hem de yerel bilgisayarınızı yapmayı unutmayın, çünkü .htaccessdosya yerel dizüstü bilgisayarımda ve web sitemde gizlendi. Public_html klasöründe mevcuttu, sadece indirdim ve dosyanın sonuna aşağıdaki kodları ekledim ve daha sonra sunucuya geri yükledim:

php_value memory_limit 256M
php_value post_max_size 256M
php_value upload_max_filesize 64M
php_value max_input_vars 1800
php_value max_execution_time 300
php_value max_input_time 300

resim açıklamasını buraya girin

resim açıklamasını buraya girin

resim açıklamasını buraya girin

resim açıklamasını buraya girin

resim açıklamasını buraya girin

Şimdilik her şey düzgün çalışıyor, herhangi bir sorunla karşılaşırsanız, lütfen buraya yazıp yukarıda gösterilen kodları değiştirebilmem için beni uyarın. Bu arada, değişikliği gösteren bazı resimler de yüklüyorum.

Paylaşılan webhosting hizmetinizde ZipArchive kurulumundan bahsetmeyi unuttuğum bir şey daha var, bu gereksinimi sadece cpanel aracılığıyla php ayarlarına gidip, php seçici uzantılarına tıklayıp ardından zip bölümünü işaretleyerek başardım, hepsi bu.

Teşekkürler.

Not: İyi uygulamalara açıkım ve burada kötü bir uygulama görürseniz lütfen bize bildirin, bunları değiştirmeye çalışacağım. Teşekkürler.


4

Belki de bu, @ seanb123 ve @Fredrick Gauss'un yorumuna yorum yapması için bir yorum olmalı, ancak PHP 7 ile Drupal 8.1'de değiştirmek için gereken dosya burada bulundu:

/etc/php/7.0/apache2/php.ini

Sistemim "Yüklü Yapılandırma Dosyası" ( php -i | grep -i "loaded configuration file") olarak adlandırılan ve info.php sayfasında bulunan dosya da dahil olmak üzere diğer dört php.ini dosyasını değiştirdim, ancak hiçbiri yardımcı olmadı. Doğru yolu keşfetmenin anahtarı 2012'de bir sitede bulundu. Yolu söylediler."/etc/php5/apache2/php.ini" GERİ SONRA bile kullanımdan kaldırıldığını ancak bana nerede bulacağına dair bir ipucu verdi. PHP7 için PHP5'ten biraz farklı ama konsept aynı.

Belki bu benim gibi başka çaresiz schmuck yardımcı olacaktır.

Bununla birlikte, benim durumumda OP'nin cevabı, kutuda yönetici ayrıcalıklarına sahip birisinin bunu yapmak zorunda kalacağıdır.

Bana yardımcı olan site: http://www.evilbox.ro/linux/remove-ispconfig-maximum-upload-size-of-2m-for-wordpress/

Buraya da değinilmiştir: PHPMyAdmin'de dosya boyutu sınırını içe aktarın

EDIT: notumun tam metni kendime:

Maksimum yükleme boyutunu değiştirmek için /etc/php/7.0/apache2/php.ini (veya eski sürümlerde: /etc/php5/apache2/php.ini) upload_max_filesize ve [gerekirse?] Post_max_size öğelerini düzenleyin.

/etc/init.d/apache2 yeniden başlatma

TEKRAR DÜZENLE: büyük dosyaları içe aktardığınız için bunları işlemek için zaman aşımını değiştirmeniz gerekebilir. Benim durumumda, örneğin büyük bir ithalat için mayın 900 olarak değiştirdiğim /usr/share/phpmyadmin/libraries/config.default.phpdeğişkenle "config.default.php" adlı dosya bulundu $cfg['ExecTimeLimit'] = 300;. Daha sonra apache'yi yeniden başlatmanız gerekiyor


3

Bu çözümlerin hiçbiri benim için işe yaramıyor !! (zaten varsayılan olarak 32M olarak ayarlanmıştır) .Sorun çoğu durumdamax_allowed_packet

Localhost üzerinde çalışıyorum ve kullanıyorum MAMP.

İşte çözümler;

1. yoksa my.ini

Ekle

--max_allowed_packet=168435456

için

...\MAMP\bin\startMysql.sh

2. my.ini dosyanız varsa

Altında

[mysqld]

Ekle

max_allowed_packet=100M

YAPILAN!


Hem php.ini hem de .user.ini'ye max_allowed_packet = 128M eklendi ve bu benim için yaptı!
Molasar

2

Kontrol etmeniz gereken üç şey.

upload_max_filesize, memory_limitVe post_max_sizephp.ini dosyasına kesinlikle.

Bu üç ayarın tümü, PHP tarafından gönderilebilecek ve işlenebilecek maksimum veri boyutunu sınırlar.

Genellikle post_max_sizeve memory_limitdaha büyük olması gerekir upload_max_filesize.


Kesinlikle emin olmak için toplam üç değişken kontrol etmeniz gerekir.


2

İle WAMPoldukça kolay hepsi

WAMP Simge> PHP> PHP Ayarları> upload_max_filesize = nM> n = (2M, 4M, 8M, 16M, 32M, 64M, 128M, 256M, 512M veya Seç (özel)).

Servis (ler) otomatik olarak yeniden yüklenir.

Eğer gerçekten varsa Ama, hiçbir sunucuya erişimi, bir yazma keşfetmek isteyebilirsiniz chunkingAPI.


0

Ayrıca bu sorunu yaşadım ve bu ayarı ayarlayarak düzelttim /etc/nginx/nginx.conf

client_max_body_size 0;

0, sınırsız olduğu gibi.

Ve ayrıca, nginx ile çalışan bir ters proxy'niz varsa, bu sunucu da bu ayara sahip olmalıdır (Bu beni buraya attı)


0

Doğru php.ini dosyasını düzenlediyseniz, Apache veya Nginx'i yeniden başlattıysanız ve hala çalışmıyorsa, php-fpm'yi de yeniden başlatmanız gerekir :

sudo service php-fpm restart 

0

Küresel olarak değişmek biraz riskli olduğundan, tek bir komut dosyası için maksimum yükleme değerini artırmaya çalışıyordum big_file_upload.php. Nedense ini_setyardım etmedi. Bazı araştırmalardan sonra bunu buldum. Koy .htaccess(adı değiştirilmediği sürece AccessFileName)

<If "%{REQUEST_URI} == '/subfolder/big_file_upload.php'" >
php_value upload_max_filesize 200M
php_value post_max_size 200M
</If>
<Else>
php_value upload_max_filesize 1M
php_value post_max_size 1M
</Else>

Benim için çalıştı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.