I have a website hosted on a PC I have no access to. I have an upload form allowing people to upload mp3 files up to 30MB big. My server side script is done in PHP.
Every time I try and upload a file, I receive an error claiming that the file exceeds the maximum size allowed, so I need to increase the size. My research on the web suggested changing the .htaccess
file which I do not have access to, so that won't work. Others suggested that I should add a custom php.ini
file to my root which did not work. Any other suggestions?
转载于:https://stackoverflow.com/questions/2184513/change-the-maximum-upload-file-size
You need to set the value of upload_max_filesize
and post_max_size
in your php.ini :
; Maximum allowed size for uploaded files.
upload_max_filesize = 40M
; Must be greater than or equal to upload_max_filesize
post_max_size = 40M
After modifying php.ini file(s), you need to restart your HTTP server to use new configuration.
If you can't change your php.ini, you're out of luck. You cannot change these values at run-time; uploads of file larger than the value specified in php.ini will have failed by the time execution reaches your call to ini_set
.
You can change it via an .htaccess
file.
.htaccess
files are stored in the same directory as your .php
files are. They modify configuration for that folder and all sub-folders. You simply use them by creating an .htaccess
file in the directory of your choice (or modify it if present).
The following should enable you to increase your upload limit (if the server provider allows PHP config changes via .htaccess
).
php_value upload_max_filesize 40M
php_value post_max_size 42M
You can also use ini_set function (only for PHP version below 5.3):
ini_set('post_max_size', '64M');
ini_set('upload_max_filesize', '64M');
Like @acme said, in php 5.3 and above this settings are PHP_INI_PERDIR directives so they can't be set using ini_set. You can use user.ini instead.
I have the same problem in the past .. and i fixed it through .htaccess
file
When you make change on php configration through .htaccess
you should put configrations in IfModule
tag, other that the Internal server error will arise.
This is an example, it works fine for me:
<IfModule mod_php5.c>
php_value upload_max_filesize 40M
php_value post_max_size 40M
</IfModule>
And this is php referance if you want to understand more. http://php.net/manual/en/configuration.changes.php
I had the same problem and i created a .user.ini file and put it in the directory in which the upload script was located. Than inside that file i set these these two values:
upload_max_filesize = 40M
post_max_size = 40M
and it worked great for me!
To locate the ini file, first run
php -i | grep -i "loaded configuration file"
Then open the file and change
upload_max_filesize = 2M
post_max_size = 2M
replacing the 2M with the size you want, for instance 100M.
I've got a blog post about with a little more info too http://www.seanbehan.com/how-to-increase-or-change-the-file-upload-size-in-the-php-ini-file-for-wordpress
I resolved this issue by creating a file called .user.ini
in the directory where the PHP file scripts reside (this means any PHP script in this directory gets the new file size limit)
The contents of .user.ini
were:
upload_max_filesize = 40M
post_max_size = 40M
Well, I would like to add my 2 cents here.
I'm using shared webhosting and I tackled this problem many times, tried to resolve it on my own but to no avail. Finally I managed to resolve it through checking various web sources and contacting my hosting service provider. My questions were "How can I change php value memory_limit
in shared webhosting?", "How can I change php value upload_max_filesize
in shared webhosting?", "How can I change php value max_input_vars
in shared webhosting?", "How can I change php value max_execution_time
in shared webhosting?", "How can I change php value max_input_time
in shared webhosting?" and many more by configuring or changing php.ini or .htaccess
file. I tried to change them but problems arose. Finally I contacted my hosting provider, and it turns out that I set my php to native, they changed it to php 5.6, here is their answer:
"Your PHP was set to 'native' mode which means you can't override those values. I've changed you to just '5.6' so you should be good to go."
After that I connected my website through ftp Filezilla, also don't forget to make both your ftp service to show hidden files, and your local computer to do so, because .htaccess
file was hidden in my local laptop and in my website. It was available in public_html folder, I just downloaded it and added the following codes to the end of the file and then uploaded it back to the 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
Everything is working properly for the time being, if any of you overcome with some problems please write here and warn me so that I can change the above-shown codes. By the way, I also upload some pictures which shows the change.
One more thing I almost forgot to mention ZipArchive installation on your shared webhosting service, I managed that requirement to tick by just going to php settings through my cpanel, click on php selector extensions and then tick zip section, that's all.
Thanks.
PS: I'm open to good practices, and if you see any bad practice here please let me know, I'll try to change them. Thanks.
I had the same problem. I have tried three ways that were usually suggested:
none if which solved my problem. I am using godaddy and came across a suggested solution which was:
Voila! Now you have a different max upload file size :)