I am trying to change the max_memory parameter so I went into my php.ini and set max_memory = 500M For some reason, when I use phpinfo(), that setting still displays 128M (the default setting). I read that some hosts restrict max_memory. Is there a way to change this value manually, or override this option in a config file, or do I have to recompile php?
If you can recompile PHP, then you, obviously, have full control of the web server.
I would guess, as written in the comments, you:
Did not restart the Apache (or not the right Apache)
(as you found) You are editing the wrong ini file.
Your server simply don't have 500MB free memory
a few other things to check:
the report from phpinfo states that it is using the php.ini file that you're editing, not some more "specific" .ini file somewhere else
you haven't overridden the memory_limit variable through an apache .htaccess file or using ini_set in a PHP script somewhere
if you're in a shared environment, as Itay suggests, you may not have more than 128M available to your account, and you probably don't have access to reset apache either.
if that's the case, try making the value smaller to see if the changes you're making take effect. If they are, and you can't increase it above 128M, time to upgrade your hosting account.. otherwise, try making the change through .htaccess or ini_set in your script because those methods don't require an apache restart.
if you still can't get it to work, contact the host and ask them to make you a local copy of the global php.ini file for your account.
Related
I have a simple wordpress web site under a windows hosting, I know that a Linux environment is better for wp but I need windows for another ASP.NET application. Anyway wordpress show me an error message about max_input_vars set to 1000 and this value should be 4000, I can't edit the php.ini then I would like to know if is it possible to set this value in the web.config, I know that in Apache it can be set in the .htaccess so I hope that can be done in the web.config as well.
Thanks in advice!
EDIT
I have found a solution: I create a php.ini file with max_input_vars=4000 and I added it to wp-admin folder after that the error message disappear and checking the environment setting by PHP Settings wordpress plugin the max_input_vars value is 4000, I don't know if this is a best practice, but works, if someone has a better solution please explain it.
Thanks!
I know it's been a long time but i thought to post a solution for anyone who search about this issue.
Go to IIS and then from the right side there is an option to stop the server.. click on it.
Go to you default programs folder. Probably C: drive (C:\Program Files (x86)) then search for PHP folder.. probably you will find more than a version. choose the one you're using in wordpress.
Inside that folder you will find a file (php.ini) edit that file using notepad (you must start notepad using admin privilege).
It is a big file.. so search for (max_input_vars = 1000) and it is commented. so you have to remove the semicolon before the word max and then increase it to 4000. You may also search for memory_limit and increase it to 128m or more.
Save the file and make sure it is saved properly. try to open it again and make sure your changes are saved.
Return back to IIS and start the server.
Close the browser and open it again. Check your wordpress if the issue is cleared.
Good luck.
There are four modes in which the PHP directives can be set:
PHP_INI_USER
PHP_INI_PERDIR
PHP_INI_SYSTEM
PHP_INI_ALL
Please have a look at how these are managed: http://www.php.net/manual/en/configuration.changes.modes.php
Each directive has one of these changeability modes defined and for that you could visit: http://www.php.net/manual/en/ini.list.php
As you'd see, the changeability attribute for directive max_input_vars is PHP_INI_PERDIR, meaning it can be overridden by adding a custom value in either of php.ini, .htaccess, httpd.conf (Apache) or .user.ini. Therefore, defining a new php.ini file to increase the limit of max_input_vars is just as fine as the other three workarounds.
Please remember though that, at times, some of the extensions that PHP would use might need to be re-enabled in custom ini files. For instance, I've at times run into problems with pdo and mysqli being considered as disabled, unless explicitly set in the custom file too, when using an override ini file.
In our .htaccess put: php_value upload_tmp_dir /path/to/dir
However, I've never got this to work.
coding: The alternative is: ini_set('upload_tmp_dir', '/path/to/dir');
But again, I've never got this to work
If we are on shared hosting, then yes, it's most likely your host's fault. We are also correct in that this directive can only be modified in the .ini/.conf files.
ini_set() will never work because it's too late in the process for that to have any effect; the server will already have tried (and failed) to write to the upload directory by the time your PHP script is executed.
can any one have better solution on this ???
Look at the output of phpinfo(), it will tell you which php.ini file it uses in row 'Loaded Configuration File'.
Find upload_tmp_dir there and edit it to your setup. Restart IIS.
I have recently purchase Godaddy Linux Shared hosting. In My site there is one php.ini file in my root(/) directory. As my requirement i have set ini paramete output_buffering=on but it will not take effect in my site.
because after changing ini setting we need to restart server, but as it is godaddy's shared server they are not able to restart server. I have talked also in support. But no result.
so can any one give solution how can php.ini change will take effect without restart apache server.
I have tried by setting in .htacces as php_value output_buffering on but it won't work.
One solution would be to use ini_set(). http://ca1.php.net/ini_set
ini_set('output_buffering', 'on');
Of course this is not completely ideal, as you have to call it wherever you want output buffering to be enabled.
I'm having the same problem this guy says he had: PHP still won't allow file uploads larger than 2 MB, although apparently he solved it.
I, however, cannot find a solution. I've edited the php.ini file to the following values:
upload_max_filesize = 20M
post_max_size = 20M
I've even tried raising them to 200M, but it still limits it at 2M, according to phpinfo().
Here are some of the variables per php.ini (name, local value, master value):
file_uploads On On
max_file_uploads 20 20
upload_max_filesize 2M 2M
I've restarted everything. The original value when I checked php.ini for upload_max_filesize was 10M anyway. It will upload smaller files, just nothing above 2MB.
Assicure that you have saved your php.ini.
Restart your webserver for example the service of Apache2 if you use it
Print again a page with phpinfo() and assicure that value has changed if not you haven't wrong file to edit.
Assure that html has attribute MAX_FILE_SIZE
Another way is to change in PHP this setting like:
ini_set('post_max_size', '20M');
ini_set('upload_max_filesize', '20M');
It is possible the file size limit is being overwritten in an .htaccess file, or in your PHP application, through ini_set() calls.
I will also remind you that when you change those values in php.ini, you probably need to restart Apache.
If this isn't something your webhost will let you do, you could always use ini_set() calls yourself, in your script. For example, place this near the top of your script:
ini_set('post_max_size', '64M');
ini_set('upload_max_filesize', '64M');
I've had this issue before. If you are running certain versions of web servers, such as running php-fpm with nginx, your php.ini file won't be in the place you expect it. For example, I believe php-fpm doesn't follow the normal php.ini, but rather a www.conf located in it's conf.d directory.
Anyway, check and make sure that your configuration isn't being overridden by a separate php.ini or other config file. If you cannot fix it in this way, you may have luck doing what Richard and Alessandro suggest.
I ran into a similar problem. the setting post_max_size was set to 3M.
I fixed it in the php.ini file from the /wamp/apache/bin folder.
I Hope it helps.
Always ensure that it is the correct php.ini file that you are updating its values.
I spent 2 weeks reconfiguring IIS7 only to realize that there were 2 php.ini files on was in the C:\Program Files (x86)\PHP\v5.4 and the other was in C:\php... however the one that worked was: C:\Program Files (x86)\PHP\v5.4
To ensure that you are on the correct path to the php.ini file
create a phpinfo.php file (structure of file below)
phpinfo();
call the file in the browser like: http://servername/websitename/phpinfo.php
Check the lline shown in pic below to verify that you are indeed editing the correct php.ini file.
Hope this helps cause it helped me. PS. Don't forget to make the changes mentioned above to increase the upload size limit
I also had the same problem and also I did the same changes in the ini.php file
upload_max_filesize = 200M
post_max_size = 200M
But it doesn't solve my problem. So, I went to wamp server in the taskbar (where we can see the green 'W' sign) and left clicked on it
PHP > PHP SETTINGS > upload_max_filesize = 256M (as the changes i made in ini.php were actually not made).
Then it WORKED.
Flogvit pretty much answered my question. WAMP was using a different php.ini file than was listed in the WAMP PHP settings option. I looked at the wamp configuration file and it was just "php.ini." I changed it to the full path of the php.ini file I wanted to use (there was another in the IIS folder), I restarted it and nothing happened. However, after restarting the computer, it now works. For some reason ini_set() doesn't work, however the solution is this:
1) open wampmanager.conf
2) change "phpConfFile = " from php.ini to the full path of the php.ini file you'd like to use, putting it in double quotes.
3) restart the computer that WAMP is on.
Thanks again for the help. That was a pretty weird problem and I don't know why I couldn't just restart WAMP (which runs all the servers, including the Apache server). I'm guessing there was something running outside of WAMP that was being run by WAMP, which is a bit of a mystery to me.
That's because you are editing the wrong config file. Check where your config file is being loaded from and edit that one instead. You might be editing the one located at /etc/php/[version]/cli/php.ini.
In my case, my loaded config file is at /etc/php/7.3/apache2/php.ini
I'm working with acquia-drupal 7 (just localhost for now), inside Microsoft WebMatrix.
I can't get my php upload limit to increase from the default 2MB. Having googled around I have done the following:
added to every existing htaccess:
php_value upload_max_filesize 10M
php_value post_max_size 10M
created php.ini file in every dir that had an htaccess (no php.ini files existed anywhere) containing the following:
upload_max_filesize = 10M
post_max_size = 10M
Restarted the site (through the Webmatrix GUI)
No apparent change whatsoever after any of this - my site still has the 2MB upload limit.
Thoughts?
The reason your changes are not taking affect are because you just created a php.ini file anew, rather than finding the one that is being used.
By definition, since you just created it, it won't be the one that exists in your php directory. :-)
But don't worry! There's an easy way to find the correct php.ini file that your site is using:
Go to /admin/reports/status on your drupal site. Here you will see information about which version of php and apache you're using, etc.
The line for 'PHP' on that page should have both the version of php you're using (something like 5.3.6) and a 'more information' link
Click on that link and you should be able to see detailed information about the php installation on your machine.
Find the line called 'Configuration File (php.ini) Path' on that screen and navigate to that to update it.
Just like you already knew, make sure you restart your server after any changes. :-)
Let us know if this fixes your problem!
Have you ever ran into a problem where you needed to upload relatively large files and still want to be able to manage these from the Drupal 7 administrative interface? If so, you may run into a situation like the one below:
You will notice the 12 MB text stating that we can only upload files that are 12 MB and under. In this case I needed this number to be a little bigger.
In order to do this you will need to modify your PHP settings in your php.ini file.
Note: You should make sure you know what you are doing and understand the consequences of increasing this number. In my case this is on a site that only users that I trust will be uploading files. If you allow any user to upload files, increasing this number can add an increased load on the server and possible eat up your disk space pretty quickly.
Now that you have been warned, here is how I was able to do this. I first found the php.ini file on my system. I am on an Ubuntu server so I was able to get to edit mine using vim like so:
vim /etc/php5/apache2/php.ini
Change the upload_max_filesize setting
The first step was to find the upload_max_filesize setting from 12MB to 30MB.
Change:
To:
Change the post_max_size setting
You may also need to modify the post_max_size setting. I changed the post_max_size php.ini setting from 20MB to 30MB.
Change:
To:
Restart Apache
You should check phpinfo to make sure your php.ini which you edited is the correct one.