Ubah ukuran file unggahan maksimum

513

Saya memiliki situs web yang dihosting di PC yang tidak dapat saya akses. Saya memiliki formulir unggah yang memungkinkan orang untuk mengunggah file mp3 hingga 30MB. Skrip sisi server saya dilakukan dalam PHP.

Setiap kali saya mencoba dan mengunggah file, saya menerima kesalahan mengklaim bahwa file melebihi ukuran maksimum yang diperbolehkan, jadi saya perlu menambah ukurannya. Penelitian saya di web menyarankan untuk mengubah .htaccessfile yang tidak dapat saya akses, sehingga tidak akan berfungsi. Yang lain menyarankan agar saya menambahkan php.inifile khusus ke root saya yang tidak berfungsi. Ada saran lain?

Yo Momma
sumber

Jawaban:

877

Anda perlu mengatur nilai upload_max_filesizedan post_max_sizedi php.ini Anda:

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

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

Setelah memodifikasi file php.ini, Anda perlu me-restart server HTTP Anda untuk menggunakan konfigurasi baru.

Jika Anda tidak dapat mengubah php.ini, Anda kurang beruntung. Anda tidak dapat mengubah nilai-nilai ini pada waktu berjalan; unggahan file yang lebih besar dari nilai yang ditentukan dalam php.ini akan gagal saat eksekusi mencapai panggilan Anda ini_set.

Lihat Deskripsi arahan inti php.ini .

meagar
sumber
4
Anda mungkin tahu rute default tempat file php.ini disimpan?
Yo Momma
1
Di Linux, biasanya di / etc / php / atau sesuatu seperti itu. Jika Anda menggunakan server bersama, Anda kurang beruntung kecuali penyedia hosting Anda cukup dermawan untuk menyediakan file php.ini per pengguna.
Johannes Gorset
4
Jika Anda menggunakan WAMP di bawah windows, Anda dapat mengeditnya dengan mengklik ikon WAMP> PHP -> php.ini. Di Debian, file config saya ada di / etc / php5 / apache2.
meagar
19
Saya sarankan untuk mengatur ukuran yang lebih tinggi post_max_size. Ukuran keseluruhan bidang yang diposkan mungkin lebih tinggi daripada ukuran file, jadi jika Anda memiliki tepi kasus seseorang mengunggah file 40MB itu akan gagal karena terlampaui post_max_size.
acme
2
Harap perhatikan bahwa memory_limit juga membatasi ukuran unggahan.
Daniel
151

Anda dapat mengubahnya melalui .htaccessfile.

.htaccessfile disimpan di direktori yang sama dengan .phpfile Anda . Mereka memodifikasi konfigurasi untuk folder itu dan semua sub-folder. Anda cukup menggunakannya dengan membuat .htaccessfile di direktori pilihan Anda (atau memodifikasinya jika ada).

Yang berikut ini akan memungkinkan Anda untuk meningkatkan batas unggahan Anda (jika penyedia server mengizinkan perubahan konfigurasi PHP melalui .htaccess).

php_value upload_max_filesize 40M
php_value post_max_size 42M
Andrew Moore
sumber
3
Tampaknya itu tidak selalu berhasil. Pada mesin dev saya menetapkan nilai yang sesuai di .htaccess melakukan pekerjaan. Namun pada hosting bersama pengaturan ini tidak berfungsi namun pesan kesalahan menunjukkan bahwa ukuran unggahan maksimum yang diizinkan adalah nilai yang saya atur di .htaccess. Jadi situasi yang sangat aneh terjadi.
Eugeniu Torica
5
Sepertinya menambahkan ini di .htaccess hanya berfungsi jika Anda menjalankan Apache. Cobalah dan berfungsi dengan baik untuk saya.
AngelGris
Ini tidak berfungsi jika 2 baris ini di php.ini tidak dihapus komentar:; Nama untuk file php.ini (.htaccess) yang ditentukan pengguna. Defaultnya adalah ".user.ini" ;user_ini.filename = ".user.ini" ; Untuk menonaktifkan fitur ini atur opsi ini ke nilai kosong;user_ini.filename =
Alan Deep
Perlu dicatat bahwa jika Anda menggunakan apache CGI atau Fast CGI ini akan menyebabkan 500 kesalahan. Bungkus ini di dalam <IfModule mod_php7.c> </IfModule>
Shardj
59

Saya memiliki masalah yang sama dan saya membuat file .user.ini dan meletakkannya di direktori di mana skrip unggahan berada. Dari dalam file itu saya mengatur dua nilai ini:

  upload_max_filesize = 40M

  post_max_size = 40M

dan itu berhasil untuk saya!

pengguna1641252
sumber
2
Bagus. Bekerja dengan fastcgi diaktifkan juga. Membutuhkan PHP5.3 atau lebih baru.
Ciantic
1
Oke, ini berfungsi pada server bersama ketika tidak ada yang lain yang berfungsi. Great ditemukan.
Edward Potter
55

Anda juga dapat menggunakan fungsi ini_set (hanya untuk versi PHP di bawah 5.3):

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

Seperti kata @acme, dalam php 5.3 dan di atas pengaturan ini adalah arahan PHP_INI_PERDIR sehingga mereka tidak dapat diatur menggunakan ini_set. Anda dapat menggunakan user.ini sebagai gantinya.

Manjar
sumber
38
Dalam versi PHP terbaru ini-pengaturan ini hanya PHP_INI_PERDIR , jadi Anda tidak dapat mengaturnya di skrip Anda. Lihat di sini untuk detail lebih lanjut.
acme
46

Untuk menemukan file ini, jalankan terlebih dahulu

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

Kemudian buka file dan ubah

upload_max_filesize = 2M
post_max_size = 2M

mengganti 2M dengan ukuran yang Anda inginkan, misalnya 100M.

Aku punya posting blog tentang dengan info lebih lanjut sedikit terlalu http://www.seanbehan.com/how-to-increase-or-change-the-file-upload-size-in-the-php-ini- file-untuk-wordpress

seanbehan
sumber
5
Ini menunjukkan file sebagai /etc/php5/cli/php.initetapi file konfigurasi saya /etc/php5/apache2/php.ini. Semacam menyesatkan.
Fredrick Gauss
Ada 2 file php.ini ... dan dengan perintah itu sebagai jawaban, ini menunjukkan kepada Anda yang mana yang Anda gunakan! Jadi, Anda perlu melakukan perubahan agar bisa berlaku!
lewis4u
40

Saya memiliki masalah yang sama di masa lalu .. dan saya memperbaikinya melalui .htaccessfile

Ketika Anda melakukan perubahan pada php configration melalui .htaccessAnda harus meletakkan konfigurasi di IfModuletag, selain itu kesalahan server internal akan muncul.

Ini adalah contoh, itu berfungsi dengan baik untuk saya:

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

Dan ini adalah referensi php jika Anda ingin lebih mengerti. http://php.net/manual/en/configuration.changes.php

Eyad Farra
sumber
5
Asalkan Anda memiliki kemampuan menimpa.
AbsoluteƵERØ
3
Untuk mendukung PHP.7 tambahkan blok yang sama dengan: <IfModule mod_php7.c>
Mostafa
16

Saya menyelesaikan masalah ini dengan membuat file yang disebut .user.inidi direktori tempat skrip file PHP berada (ini berarti skrip PHP apa pun dalam direktori ini mendapatkan batas ukuran file baru)

Isi dari .user.iniadalah:

upload_max_filesize = 40M
post_max_size = 40M
Pearce
sumber
2
Ini solusi untuk saya. Hanya bekerja dengan baik. Jika Anda menggunakan kerangka kerja seperti codeignitor, ".user.ini" harus berada di tempat yang sama dengan index.php
The Dude
Terima kasih. Itu bekerja untuk saya. Ini sangat ideal untuk shared hosting, di mana Anda tidak memiliki akses ke php.ini. Saya hanya akan menambahkan bahwa itu tersedia sejak PHP 5.3
yacsha
6

Saya memiliki masalah yang sama. Saya telah mencoba tiga cara yang biasanya disarankan:

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

tidak ada yang memecahkan masalah saya. Saya menggunakan godaddy dan menemukan solusi yang disarankan yaitu:

  1. sampai ke Web Hosting , lalu Kelola
  2. Di bawah Perangkat lunak pilih Pilih versi PHP
  3. Pilih Alihkan ke Opsi PHP yang ditemukan di sudut kanan atas tabel dalam warna font: biru
  4. Pada bagian paling bawah, Anda mungkin akan memiliki upload_max_filesize = 2M
  5. Sekarang, jangan ragu untuk mengubahnya
  6. Pastikan untuk mengklik tombol Simpan !
  7. Sekarang buka panel wp-admin Anda, pilih Media lalu Tambah

Voila! Sekarang Anda memiliki ukuran file unggah maks yang berbeda :)

nrmb
sumber
6

berkali-kali saya perhatikan bahwa situs dengan hosting bersama tidak memungkinkan untuk mengubah pengaturan dalam file php.ini. satu juga tidak bisa membuat file .htaaccess sama sekali. dalam situasi seperti itu seseorang dapat mencoba mengikuti hal-hal berikut

ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);
Akademi EasyLearn
sumber
6

jawabannya agak tidak lengkap, 3 hal yang harus kamu lakukan

di php.ini dari instalasi php Anda (catatan: tergantung jika Anda menginginkannya untuk CLI, apache, atau nginx, temukan php.ini yang tepat untuk dimanipulasi. Untuk nginx biasanya terletak di /etc/php/7.1/fpmtempat 7.1 bergantung pada versi Anda. Untuk apache biasanya /etc/php/7.1/apache2)

post_max_size=500M

upload_max_filesize=500M

memory_limit=900M

atau atur nilai lainnya. Mulai ulang / muat ulang apache jika Anda telah memasang apache atau php-fpm untuk nginx jika Anda menggunakan nginx.

Toskan
sumber
5

Nah, saya ingin menambahkan 2 sen saya di sini.

Saya menggunakan webhosting bersama dan saya menangani masalah ini berkali-kali, mencoba menyelesaikannya sendiri tetapi tidak berhasil. Akhirnya saya berhasil mengatasinya dengan memeriksa berbagai sumber web dan menghubungi penyedia layanan hosting saya. Pertanyaan saya adalah "Bagaimana saya bisa mengubah nilai php memory_limitdi webhosting bersama?", "Bagaimana saya bisa mengubah nilai php upload_max_filesizedi webhosting bersama?", "Bagaimana saya bisa mengubah nilai php max_input_varsdi webhosting bersama?", "Bagaimana saya bisa mengubah nilai php max_execution_timedi shared webhosting? "," Bagaimana saya bisa mengubah nilai php max_input_timedi webhosting bersama? " dan banyak lagi dengan mengkonfigurasi atau mengubah php.ini atau .htaccessfile. Saya mencoba mengubahnya tetapi timbul masalah. Akhirnya saya menghubungi penyedia hosting saya, dan ternyata saya mengatur php saya ke asli, mereka mengubahnya ke php 5.6,

"PHP Anda disetel ke mode 'asli' yang berarti Anda tidak dapat mengesampingkan nilai-nilai itu. Saya telah mengubah Anda menjadi hanya '5,6' sehingga Anda harus baik-baik saja."

Setelah itu saya menghubungkan situs web saya melalui ftp Filezilla, juga jangan lupa untuk membuat layanan ftp Anda untuk menampilkan file tersembunyi, dan komputer lokal Anda melakukannya, karena .htaccessfile disembunyikan di laptop lokal saya dan di situs web saya. Itu tersedia di folder public_html, saya baru saja mengunduhnya dan menambahkan kode berikut ke akhir file dan kemudian mengunggahnya kembali ke server:

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

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Semuanya berfungsi dengan baik untuk saat ini, jika ada di antara Anda yang mengatasi beberapa masalah, silakan tulis di sini dan peringatkan saya agar saya dapat mengubah kode yang ditunjukkan di atas. Ngomong-ngomong, saya juga mengunggah beberapa gambar yang menunjukkan perubahan.

Satu hal lagi yang saya hampir lupa menyebutkan instalasi ZipArchive pada layanan webhosting bersama Anda, saya mengatur persyaratan itu untuk mencentang dengan hanya pergi ke pengaturan php melalui cpanel saya, klik pada ekstensi pemilih php dan kemudian centang bagian zip, itu saja.

Terima kasih.

PS: Saya terbuka untuk praktik yang baik, dan jika Anda melihat ada praktik buruk di sini, beri tahu saya, saya akan mencoba mengubahnya. Terima kasih.

garakchy
sumber
4

Mungkin ini seharusnya komentar ke @ seanb123 dan @Fredrick Gauss mengomentari komentarnya, tetapi bagi saya di Drupal 8.1 dengan PHP 7 file yang saya perlu modifikasi ada di sini:

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

Saya modded mungkin empat file php.ini lainnya, termasuk yang sistem saya disebut "Loaded Configuration File" ( php -i | grep -i "loaded configuration file") dan yang ditemukan di halaman info.php tetapi tidak ada yang membantu. Kunci untuk menemukan jalur yang benar ditemukan di sebuah situs mulai 2012. Mereka mengatakan jalur "/etc/php5/apache2/php.ini"itu sudah usang bahkan KEMBALI, tetapi itu memberi saya petunjuk di mana menemukannya. Untuk PHP7 ini sedikit berbeda dari pada PHP5 tetapi konsepnya sama.

Mungkin ini akan membantu orang bodoh yang tidak berdaya seperti saya.

Yang sedang berkata, jawaban untuk OP dalam kasus saya adalah bahwa seseorang dengan hak istimewa admin pada kotak harus melakukannya.

Situs yang membantu saya: http://www.evilbox.ro/linux/remove-ispconfig-maximum-upload-size-of-2m-for-wordpress/

Ini juga dibahas di sini: Impor batas ukuran file di PHPMyAdmin

EDIT: teks lengkap catatan saya untuk saya sendiri:

Untuk mengubah ukuran unggahan maks, edit unggah_max_filesize dan [jika perlu?] Post_max_size di /etc/php/7.0/apache2/php.ini (atau dalam versi yang lebih lama: /etc/php5/apache2/php.ini)

/etc/init.d/apache2 restart

EDIT LAGI: karena Anda mengimpor file besar, Anda mungkin perlu mengubah batas waktu untuk memprosesnya. Dalam kasus saya, file bernama, "config.default.php" ditemukan di /usr/share/phpmyadmin/libraries/config.default.phpdengan variabel $cfg['ExecTimeLimit'] = 300; saya mengubah milik saya menjadi 900 untuk impor besar, misalnya. Setelah itu Anda perlu memulai ulang apache

seizethecarp
sumber
3

Tidak ada solusi yang bekerja untuk saya !! (sudah diatur ke 32M secara default). Masalahnya dalam kebanyakan kasusmax_allowed_packet

Saya bekerja di localhost dan menggunakan MAMP.

Inilah solusinya;

1. Jika Anda tidak punya my.ini

Menambahkan

--max_allowed_packet=168435456

Untuk

...\MAMP\bin\startMysql.sh

2. Jika Anda memiliki my.ini

Dibawah

[mysqld]

Menambahkan

max_allowed_packet=100M

DIBUAT!

ErcanE
sumber
Menambahkan max_allowed_packet = 128M ke php.ini dan .user.ini dan itu berhasil untuk saya!
Molasar
2

Tiga hal yang perlu Anda periksa.

upload_max_filesize, memory_limitdan post_max_sizedalam file konfigurasi php.ini persis.

Ketiga pengaturan ini membatasi ukuran maksimum data yang dapat dikirim dan ditangani oleh PHP.

Biasanya post_max_sizedan memory_limitharus lebih besar dari upload_max_filesize.


Jadi, tiga variabel total yang perlu Anda periksa untuk benar-benar yakin.

prosti
sumber
2

Dengan WAMPitu semua sangat mudah

WAMP Ikon> PHP> Pengaturan PHP> upload_max_filesize = nM> n = (2M, 4M, 8M, 8M, 32M, 64M, 128M, 256M, 512M, atau Choose (custom)).

Layanan dimuat ulang secara otomatis.

Tetapi, jika Anda benar-benar tidak memiliki akses ke server, Anda mungkin ingin menjelajahi menulis chunkingAPI.

SimonB
sumber
0

Saya juga memiliki masalah ini, dan memperbaikinya dengan mengatur pengaturan ini di /etc/nginx/nginx.conf

client_max_body_size 0;

0, seperti yang tidak terbatas.

Dan juga, jika Anda memiliki proksi terbalik yang berjalan dengan nginx, server itu juga harus memiliki pengaturan ini (Inilah yang melemparkan saya ke sini)

Typewar
sumber
0

Jika Anda mengedit file php.ini yang tepat, me - restart Apache atau Nginx dan masih tidak berfungsi, maka Anda juga harus me - restart php-fpm :

sudo service php-fpm restart 
Adrian Onu
sumber
0

Karena mengubah secara global agak berisiko, saya mencoba meningkatkan nilai unggahan maks untuk satu skrip big_file_upload.php . Untuk beberapa alasan ini_settidak membantu. Setelah beberapa penelitian, saya menemukan ini. Masukkan .htaccess(kecuali nama diubah melalui 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>

Bekerja untukku.

Hebe
sumber