I'm using a container in Docker to host my Laravel app and this container is connected to another container using Nginx to host it. I'm trying to import a SQL file into my Laravel app with a seeder that's like this
$path = public_path('sql/2022_11_16_import_table.sql');
$sql = file_get_contents($path);
DB::unprepared($sql);
However, it displayed the error
Symfony\Component\Debug\Exception\FatalErrorException : Allowed memory size of 134217728 bytes exhausted (tried to allocate 186885432 bytes)
at /var/www/database/seeds/SqlFileSeeder.php:16
I have figured this is due to my memory_limit in php.ini is being 128M so I went ahead and changed it by changing the php.ini-development and php.ini-production file inside the PHP container and then restart the whole container and the Nginx container. However, when I tried
php -ini
again the memory_limit is still 128M=>128M despite both the php.ini file has been changed. I have also tried ini_set('memory_limit','200M'); but it still seems to have no effect.
You can add a command at the end of your docker file to copy the php.ini-production or php.ini-development to /usr/local/etc/php/php.ini.
Something like this:
RUN cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini && \
sed -i -e "s/^ *memory_limit.*/memory_limit = 4G/g" /usr/local/etc/php/php.ini
php.ini-production file will not read. PHP initialization work with php.ini files, which are end .ini extension. You can add volume in Docker for main php.ini files like that:
volumes:
- 'configs/php.ini:/usr/local/etc/php/php.ini'
Content of php.ini
memory_limit = 200M
If you will do it manually after docker compose up, then you will need to run some commands:
Enter to Docker container
docker compose -it my_container_name bash
Restart PHP-fpm and Nginx services
service php-fpm restart
service nginx reload
Thanks for the suggestions. I have used php.ini based on the 2 files and after reloading nginx it worked as intended. Alternatively I also tried
ini_set right before
$path = public_path('sql/2022_11_16_import_table.sql');
$sql = file_get_contents($path);
DB::unprepared($sql);
and it also did the job. Previously I ini_set in another file but after further reading I hace come to realized it just set for the current working file and not globally.
I need to change PHP max_input_vars variable but after change in php.ini and server restart phpinfo shows old value all the time. This is what i do:
in phpinfo() i've got
...
Loaded Configuration File /etc/php.ini
...
max_input_vars 1000
from server CL I've edit /etc/php.ini and uncomment line with max_input_vars it looks like this:
...
max_input_vars = 5000
...
after this changes and restarting web server
systemctl restart httpd
phpinfo still shows max_input_vars as 1000
It looks like php use some other php.ini or values are overwritten because with other settings like max_execution_time is the same.
If i'm doing it wrong way? Is this possible that phpinfo shows different configuration file than the one used?
phpinfo output:
As you're using PHP-FPM, you need to check it's configs for overrides, typically in /etc/php-fpm/*.conf.
php_admin_value[max_input_vars] = XXX
After validating there are no overrides that affect your settings, restart the php-fpm service and as a best-practice also Apache.
systemctl restart php-fpm httpd
Restarting the PHP-FPM service is required because Apache passes requests to the running PHP instance(s) loaded into memory from the PHP-FPM service. As PHP is already loaded into memory by PHP-FPM, the PHP-FPM service needs to be restarted for PHP configuration changes to be applied.
Apache prior to PHP-FPM typically relied on starting the PHP process using the Apache mod_php, thereby requiring the restarting of the Apache service for configuration changes to be applied immediately, or until mod_php reloaded the PHP instance.
Based on your configuration, you should add additional PHP config settings to /etc/php.d/zzz-custom.ini instead of /etc/php.ini. PHP will load the config files in alphabetical order, resulting in the zzz-custom.ini file being loaded last and be used as the final values of the PHP settings.
Using the /etc/php.d/zzz-custom.ini file will also prevent the loss of your custom php.ini settings and the need to make extensive changes to the default /etc/php.ini file when updating PHP versions.
However, /etc/php-fpm/*.conf settings will take precedent over any /etc/php.d/*.ini configs.
first: Method is edit the PHP. ini file
Locate your PHP. ini file. ...
If you find your existing PHP. ini, open the file and locate the following line of code (xx represents a number): max_input_vars = xx ; And set it to your desired limit. ...
If you created your own PHP. ...
Save your changes, and reboot your localhost or your server.
I have changed all the php.ini parameters I know:
upload_max_filesize, post_max_size.
Why am I still seeing 2MB?
Im using Zend Server CE, on a Ubuntu VirtualBox over a Windows 7 host.
Find the file called: php.ini on your server and follow below steps
With apache2 and php5 installed you need to make three changes in the php.ini file. First open the file for editing, e.g.:
sudo gedit /etc/php5/apache2/php.ini
OR
sudo gedit /etc/php/7.0/apache2/php.ini
Next, search for the post_max_size entry, and enter a larger number than the size of your database (15M in this case), for example:
post_max_size = 25M
Next edit the entry for memory_limit and give it a larger value than the one given to post_max_size.
Then ensure the value of upload_max_filesize is smaller than post_max_size.
The order from biggest to smallest should be:
memory_limit
post_max_size
upload_max_filesize
After saving the file, restart apache (e.g. sudo /etc/init.d/apache2 restart) and you are set.
Don't forget to Restart Apache Services for changes to be applied.
You probably didn't restart your server ;)
Or you modified the wrong php.ini.
Or you actually managed to do both ^^
Just change your php.ini(xampp/php/php.ini) file, it worked for me!
max_execution_time = 5000
max_input_time = 5000
memory_limit = 1000M
post_max_size = 750M
upload_max_filesize = 750M
And, don't forget to restart Apache Module from XAMPP Control Panel.
Increase phpMyAdmin upload / import size
By default you get a 2mb limit of upload / import size in phpmyadmin. That makes it odd and highly impossible to import larger files. You can increase the allowed upload size of phpmyadmin by editing your server’s php.ini configuration file. Usually in servers like CentOs it is located at /etc/php.ini.
Step 1: Go to php.ini and find the following and change their values to something more higher than your database size. (In this example i have used 20mb).
upload_max_filesize = 20M
post_max_size = 20M
Step2 : Restart your apache service for this new change to take effect. Usually the command to restart apache would be
service httpd restart (CentOs) / service apache2 restart (ubuntu)
You can also restart directly from their path like
/etc/init.d/apache2 restart or /etc/init.d/httpd restart
If you are in a shared hosting and do not have root access or access to your php.ini configuration file, then the other way is to create a .htaccess file in your application root and add the following line
php_value upload_max_filesize 10M
php_value post_max_size 10M
If you were still not able to increase it, please send me an email for more detailed assistance.
For uploading large files through PHPMyAdmin, follow these steps:
Step 1: Open your php.ini file.
Step 2: Upgrading Memory Limit:
memory_limit = 750M
Step 3: Upgrading Maximum size to post:
post_max_size = 750M
Step 4: Upgrading Maximum file-size to upload:
upload_max_filesize = 1000M
Step 5: Upgrading Maximum Execution Time:
max_execution_time = 5000
Step 6: Upgrading Maximum Input Time:
max_input_time = 3000
Step 7: Restart your xampp control panel.
Check your all 3:
upload_max_filesize
memory_limit
post_max_size
in the php.ini configuration file
* for those, who are using wamp #windows, you can follow these steps: *
Also it can be adapted to any phpmyadmin installation.
Find your config.inc.php file for PhpMyAdmin configuration (for wamp it's here: C:\wamp\apps\phpmyadminVERSION\config.inc.php
add this line at the end of the file BEFORE "?>":
$cfg['UploadDir'] = 'C:\wamp\sql';
save
create folder at
C:\wamp\sql
copy your huge sql file there.
Restart server.
Go to your phpmyadmin import tab and you'll see a list of files uploaded to c:\wamp\sql folder.
With WAMP, on Windows10, open
c:\wamp64\alias\phpmyadmin.conf
and change 128 by 256 at the end of these lines
php_admin_value upload_max_filesize 128M
php_admin_value post_max_size 128M
Restart WAMP
Open this file
edit these parameters:
memory_limit =128M
post_max_size = 64M
upload_max_filesize = 64M
This is how i did it:
Locate in the /etc/php5/apache2/php.ini
post_max_size = 8M
upload_max_filesize = 2M
Edit it as
post_max_size = 48M
upload_max_filesize = 42M
(Which is more then enough)
Restarted the apache:
sudo /etc/init.d/apache2 restart
None of the current answers will work for WHM / cPanel servers.
To increase the limit in WHM:
Navigate to Server Configuration > Tweak Settings
Choose the PHP tab
Update "cPanel PHP max POST size" & "cPanel PHP max upload size" (POST size should be bigger)
Ubuntu 20.04, 20.10, 22.04 and 22.10.
Well, with other distros as base Ubuntu as Xubuntu.
Edit : sudo nano /etc/php/7.4/apache2/php.ini
Search and modify : post_max_size = 120M and upload_max_filesize = 120M
Replace 120 with the value you need, e.g. 22M, etc.
Important, you have to change to the version of PHP that you have by default at that moment. Example with PHP 8.1: sudo nano /etc/php/8.1/apache2/php.ini
To check what version of PHP you have, just run php -v in your terminal.
I had the same problem.
My Solution:
go to /etc/phpmyadmin and edit apache.conf
in the <Directory>[...]</Directory> section you can add
php_value upload_max_filesize 10M
php_value post_max_size 10M
Solved the problem for me!
I found the problem and am post hete if anyone followed some blog post out there to create the sort of enviromment I have (win 7 host with ubuntu and zend server ce on virtual box).
The thing is that MySQL is running on Lighttpd, not under Apache. So I had to change the php.ini file under that webserver as well which is in the path:
/usr/local/zend/gui/lighttpd/etc/php-fcgi.ini
In the end, you were right about the files, of course, but I was wrong on what file I had to change :)
C:\xampp\php\php.ini in my case
or it could be C:\php\php.ini if the Apache / PHP / MySQL are stand alone
upload_max_filesize = 2M by default
so it can be changed as desired. And in my case
upload_max_filesize = 20M
post_max_size = 8M by default
it should be changed to post_max_size = 20M as well
memory_limit=128M is by default and it is not necessary to change to increase the max
2056kb or 2mb .sql file upload limit. But it only means that a script can consume up to 128 memory when you run apache and sql server , and if you change memory_limit=128M to higher and run any malfunctioned script then it may cause you trouble. So its up to you.
I had a problem with changing the upload size on my phpmyadmin and OS X 10.9.4 Mavericks.
At first I didn't know where the php.ini is so used locate
locate php.ini
which came back with
/private/etc/php.ini.default
/usr/local/etc/php/5.4/php.ini
I've tried editing /usr/local/etc/php/5.4/php.ini and then restart in the server put this didn't work.
I remembered that there is a better way to find out this file I'm looking for or and least where php is looking for php.ini.
<?php phpinfo() ?>
came back saying that it expects /etc/php.ini but I didn't have one there. The below is from the phpinfo():
Configuration File (php.ini) Path: /etc
It turns out that the first result in the locate command above is what I'm looking for.
At least in OS X 10.9.4 Mavericks (OS X is something new to me) /etc is actually a link, etc -> private/etc, and by the looks of it PHP assumes default values unless php.ini is actually present.
I copied /private/etc/php.ini.default
cp /private/etc/php.ini.default /private/etc/php.ini
Then checked the variables in the new /etc/php.ini as per Aditya Bhatt advice above and it worked.
In my case the values were:
memory_limit =128M
post_max_size = 64M
upload_max_filesize = 64M
Obviously, the apache service has to be restarted to see the changes.
php_value upload_max_filesize 100M
php_value post_max_size 100M
increse that size in php.ini then run command
sudo service apache2 restart
sudo service mysql restart
in xammp
restart all service
How to import huge amount of Data in Xampp
It’s the best solution to open new, clean database, and import the file in phpMyAdmin. Choose file from local folder and leave all settings as is. That should be it.
But if your file exceeded file size of 2MB (that is default value in xampp installation) than you need to tweak some out. Basically we will just increase the maximum upload file size.
Open your xampp install folder and go to php folder. With some text editor file (notepad++) open the file called php.ini (by type windows describe it as configuration settings) and edit the line (cca. 770, or press ctrl+f in notepad++ to find it):
post_max_size = 2M
instead 2M, put wanted maximum file size (16MB for example but not higher than 128M),
after that go to this line:
max_execution_time = 30
instead 30, increase execution time that’s in seconds (90 for example), also you need to change this line:
max_input_time = 60
instead 60, increase input time in seconds (120 for example)
and top of all you have to change this line:
upload_max_filesize = 2M
instead of 2M, increase to 16M for example.
Save the file, restart apache and mysql in xampp and try to upload again, if you follow correctly you should be able to import files through 16MB (example)
You could just use MySQL administrator app or MySQL workbench.
Lightweight apps and you can export or import your entire server however the size.
Am late to the party here but I hope it helps someone.
I had the same problem, My upload limit was 2 MB, I edited my php.ini, and I set it to 5 MB but still it was showing 2 MB even after restarting server. Than I compressed my .sql file to zip by keeping its name as xyz.sql.zip so it became 451 kb from 3.5 mb. Then I uploaded it again. It worked for me.
I found that increasing the upload and post limit in php.ini did not affect the limit in phpmyadmin. This is because my server has a separate setting for cpanel upload limit. If you have access to WHM, you probably have this.
To adjust:
login to your WHM panel: this is usually located at {your server ip}/whm and you will need your root login details here. If you don't have those, request them from your host.
once logged in, in the top left search bar, search for "tweak settings"
On the tweak setting pages, search for "cPanel PHP max upload size"
Adjust the number and save
No need to restart apache or anything, changes are instant. This process increased the value of max upload file size in phpmyadmin. You can check this by going to phpmyadmin and selecting your database, then clicking "import" at the top. Beside the file selector you will see the upload limit. My server default was 100.
In my case, I also had to add the line "FcgidMaxRequestLen 1073741824" (without the quotes) in /etc/apache2/mods-available/fcgid.conf. It's documented here http://forum.ispsystem.com/en/showthread.php?p=6611 . Since mod_fcgid 2.3.6, they changed the default for FcgidMaxRequestLen from 1GB to 128K (see https://svn.apache.org/repos/asf/httpd/mod_fcgid/trunk/CHANGES-FCGID )
do the following things
increase upload_max_file_size in php.ini
gzip your sql file
and then import the file
I was facing the same problem where increasing max size in php.ini has no effect on wordpress and tried many solutions like -:
Increase max size via functions.php
Increase max size via .htaccess file.
The one that worked for me is adding max size in .htaccess file.
It wasn't working with neither with php.ini file nor with functions.php file.
I just did add this code in .htaccess file and its done
php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300
NOTE: I did add above code in <IfModule> tag.
If php.ini file is not doing anything in changing size then try other 2 files for it and one of them will surely work for you.
READ THIS ARTICLE TO KNOW ABOUT ALL FILES IN WHICH YOU CAN INCREASE MAX SIZE
I think if your php version is above 5.5, let say it is 5.6, then your php.ini file is in following folder
/etc/php/5.6/apache2
so you have to apply your changes like post_max_size, upload_max_filesize and memory_limit there.
Hope it will help you.
I've tried all of the above and nothing worked for me: my phpmyadmin (on wamp) was still showing 128MiB (while I've needed to import DB which size was 212Mb)
so if U stucked as me you can import it with the help of commandline:
run bash (cmd, powershell or whatever terminal) from folder where your .sql file is located (or cd that path in terminal)
run mysql -u username -p database_name < file.sql where
username - is username for mysql server
database_name - is name of db you want import to
file.sql - is name of your sql file
👍😉
for me just worked like a charm after 2hours of trying to manipulate this through php.ini and other configurational files 🙈👌
Search for php.ini file
For xampp, you can get it # C:\xampp\php
Find the following 3 properties and set there value according to your need
memory_limit
post_max_size
upload_max_filesize
Restart Apache!
I am using Bitnami WAMP Stack 7.1.8-0 on my localhost. For me, the PHPMyAdmin maximum upload size limit was set to 80MiB as in the screenshot https://nimb.ws/fFxv7O. I managed to increase this size limit as explained below:
Go to the folder where you have installed the Bitname WAMP Stack, for me, it is "E:\Bitnami WAMP Stack”
Further inside, go to the path “apps\phpmyadmin\conf"
Open the file httpd-app.conf in your favorite text editor
Find the following two lines:
php_value upload_max_filesize 80M
php_value post_max_size 80M
(The 80M value at the end of these lines may be different for you)
Go ahead and change these values at the end of these two lines (80M in this case) according to your needs.
Restart WAMP server.
Now go to PHPMyAdmin and see, your upload size limit should be updated to whatever you set it to. That is it.
Note: (added July 2020)
I'm surprised nobody else has mentioned this ... changing php.ini should probably be your last resort when increasing file upload sizes to something as big as 64MB.
It may not matter greatly on development machines, but editing php.ini to globally increase max upload size could be a really bad idea on a server where you have several websites operating. MySQL imports to PHPMyAdmin are often large, but you don't want every Tom, Dick and Mary uploading 64MB files to another site on your server because you need to do it every now and again for your MySQL database.
I'd suggest a better solution is therefore (assuming you are using the standard Apache PHP module) to edit the specific virtual host configuration for PHPMyAdmin.
On Ubuntu Linux, this is found in /etc/apache2/conf-enabled/
phpmyadmin.conf. On WAMP/Windows/Whatever you'll need to look at the setup for your Apache configuration, but it will probably be in conf-enabled, conf.d, sites-enabled, or something like that. These are actually often just symlinks to the actual file which is located somewhere like /etc/phpmyadmin/apache.conf (again using Ubuntu as the example here).
Your apache.conf file will include lines something like this:
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
# limit libapache2-mod-php to files and directories necessary by pma
<IfModule mod_php7.c>
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/:/usr/share/php/PhpMyAdmin/:/usr/share/php/Symfony/:/usr/share/php/Twig/:/usr/share/php/Twig-Extensions/:/usr/share/php/ReCaptcha/:/usr/share/php/Psr/Container/:/usr/share/php/Psr/Cache/:/usr/share/php/Psr/Log/:/usr/share/php/Psr/SimpleCache/
</IfModule>
</Directory>
Immediately after <IfModule mod_php7.c> add these lines:
php_value post_max_size 64M
php_value upload_max_filesize 64M
Depending on your server config, you can probably achieve the same thing in an .htaccess file if you prefer. In which case you could just add the two lines by themselves (assuming you know for certain that PHP is enabled).
If you use fpm or fastcgi or something with or without Apache, the same more localized approach to controlling upload sizes can be achieved by using .user.ini files.
Ubuntu 20.04:
Changing php.ini files and restarting apache was not enough, I had to also do this:
sudo service php7.4-fpm restart
The first things to check (or ask your host provider to check) are the values of max_execution_time, upload_max_filesize, memory_limit and post_max_size in the php.ini configuration file. All of these three settings limit the maximum size of data that can be submitted and handled by PHP.
Please note that post_max_size needs to be larger than upload_max_filesize.