Is there a php (or composer) terminal command to change the php.ini variables upload_max_filesize and post_max_size from terminal to some value directly from terminal, without sed or awk operations?

The reason; having a more a version-agnostic and more backward-compatible directive in my server-environment-establishment script, to change the values of these two variables.


If I'm not wrong utilizing the confd CM (supported in PHP >= 5.0) should be good (I can't test right now):

1. Create something like /etc/php7/conf.d/local.ini.

2. Add to it:

upload_max_filesize = 2000M
post_max_size = 2000M
  • Change them in your php application with ini_set ? – Tensibai Nov 20 '18 at 12:51
  • Do not use ini_set! – Kyslik Nov 29 '18 at 9:44

The reason; having a more a version-agnostic and more backward-compatible directive in my server-environment-establishment script, to change the values of these two variables.

If you're trying to configure a server, you should use a configuration management system (Ansible, Puppet, Chef, Salt) or bake images for immutable infrastructure; trying to hack in pieces of configuration via PHP or bash or whatever will just make you unhappy.

| improve this answer | |
  • I am sorry Xiong but it seems Ansible (which is helpful in so much) isn't very helpful in this particular case please look: unix.stackexchange.com/questions/489281/… – user5176 Dec 17 '18 at 7:14
  • There isn't an Ansible module to change just that value, but I would throw the entire php.ini in a jinja template; you'll want to control it all anyways. – Xiong Chiamiov Dec 18 '18 at 6:49
  • Oh curd, I linked to the answer instead to the question (which I'm sure you've seen)... Anyways, I have no idea what's a jinja template. If you have the spare time and will, I'll appreciate a short answer there - it would be helpful indeed... – user5176 Dec 18 '18 at 7:13

PHP has supported conf.d configuration subdirectories for ages now (cf. PHP_INI_SCAN_DIR in its documentation, this stuff is as old as PHP 5 basically) - allowing you to simply add a small file containing just the snippet of config you need in there, and as long as you make sure it's named so that it's ordered in a way it overrides the defaults, you're done.

IOW you don't go searching for an existing value to fiddle with, you just add your own.

| improve this answer | |
  • Seems a great way, but it's strange for me no one mentioned it before you (also in AskUbuntu and I never came across conf.d in Apache, only in Nginx). Are you sure you don't mean to Nginx?... Please example what you will do in Apache... – user5176 Nov 28 '18 at 21:53
  • 1
    These are all separate programs, all of which have their own method of including configuration subdirectories. Apache has used it with the name conf.d, before they switched to conf-available/enabled, and they effectively use the same thing with mods-available/enabled and sites-available/enabled. nginx uses it for conf.d, sites-available/enabled. php uses it for conf.d, in each of the SAPI config directories. It's actually quite widespread. There may be platform differences, though, I'm primarily referring here to Debian/Ubuntu. – Josip Rodin Nov 29 '18 at 11:20
  • Nice to know ! (I'm not a PHP programmer nor I know Apache well). I primarily use Debian Ubuntu. I upvoted your answer after this explanation as this seems promising. I encourage you to show an example of what you would have changed. Of course I'll accept this answer if it'll include a way that works for me well. – user5176 Nov 29 '18 at 12:57
  • Have a look at e.g. stackoverflow.com/a/34724226/4617744 – Josip Rodin Nov 29 '18 at 15:28

You can use regex and after that change, you need to restart the webserver:

sed -i 's/upload_max_filesize\s*=.*/upload_max_filesize=100M/g' path/to/php.ini
sed -i 's/post_max_size\s*=.*/post_max_size=100M/g' path/to/php.ini
sed -i 's/memory_limit\s*=.*/memory_limit=512M/g' path/to/php.ini

But it is preferable to use Configuration Management Tools

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy