php.ini changes don't have any effect
Solution 1
if you're unsure what php.ini is being used, create a new file in your webfolder, name it phpinfo.php
for example , with the following content
<?php
phpinfo();
?>
then open the url in your browser (http://www.example.com/phpinfo.php). it will show the path to the php.ini being used.
when you have identified the correct file, make your desired changes, and be sure to remove the leading ; in case there is one to activate the setting.
restart apache and reload the phpinfo page, your changed setting should now show up. if it doesn't, make sure you don't have a .htaccess file in your webroot that overrides php settings.
Solution 2
You may want to read these threads:
- Can't get PHP to stop showing errors
- php 7 ignores ini files, but claims to load
- Trouble enabling display_error in php.ini
hints:
- What is "Loaded Configuration File" in php_info output? -> check that you edit the correct ini-file.
- check for multiple occurences of your setting in the same file.
- Gryphius´s hint is not bad either: Uncomment the setting! (remove the leading ";")
- Check permissions on the ini file. The web server and php-cgi/php-fpm need read access.
- php 5 and later: Do not only restart the web server, but also the php-fpm service before testing.
Solution 3
I found a very blatant error in my php.ini
file which caused this very symptom, eg. some php.ini settings did not take effect..
As of php7.0, the #
character is not a valid comment starter. Only ;
is accepted. But still many editors, for example vim
, show characters after "#
" as comments so you may not recognise that a certain part of the php.ini file is not an ignorable comment.
In my case, the php.ini
filed contained this:
# ""
max_input_vars = 3000
The max_input_vars = 3000
did not take effect because the previous line is not a comment. It has some side-effect which causes my next line to be ignored.
Changing it to
; ""
max_input_vars = 3000
solved the problem.
Solution 4
Follow this:
Create a file inside your webroot naming it whatever you want. I usually prefer x.php
# vim x.php
The contents of the file should be this:
<?php
phpinfo();
?>
Now open this file in your browser like this:
http://server_ip/x.php
This will show you the location of the php.ini your apache is using. Edit that php.ini and it will work.
Related videos on Youtube
Fcoder
Updated on September 18, 2022Comments
-
Fcoder almost 2 years
When I make any changes in php.ini located in /usr/local/lib on centos, the changes don't appear to be applied, for example, when I clear all the content of php.ini and restart Apache everything works fine...
I searched for php.ini and it is in one place in system... what's the problem? How can I fix this?
-
Khaled over 11 yearsHow did you search for this file? What command did you use? What paths did you look into?
-
Fcoder over 11 years@Khaled i searched with this way: whereis php.ini
-
Hennes over 11 yearsHow many php.ini's do you have (E.g. check with
find / -name php.ini -print
). -
Fcoder over 11 yearsi have only one at: /usr/local/lib/php.ini
-
-
Fcoder over 11 yearsi do this an this is output: Configuration File (php.ini) Path /usr/local/lib Loaded Configuration File /usr/local/lib/php.ini
-
Fcoder over 11 yearsi do this an this is output: Configuration File (php.ini) Path /usr/local/lib Loaded Configuration File /usr/local/lib/php.ini
-
Gryphius over 11 yearswhat value did you try to change? did you remove the leading ';' to activate the setting?
-
Napster_X over 11 yearsThat means you are using this file only. Any changes to this file will be reflected in Apache. You can test the same with the same URL. Make some change in some variable in this php.ini, and that will be reflected in x.php file in browser.
-
Omar Tariq almost 8 yearsIsn't omitting the ending tag of php
?>
a good practice? -
Tibor Nagy over 4 yearsYes point 5 is the unusual step. Thanks.
-
konung over 3 yearsPoint 5 was the solution for me as well ! I tried everything else on my own, and noticed that changes only take effect after a full reboot. Just wasn't sure which service needs to be restarted to take effect! Thank you
-
Buttle Butkus over 3 yearsOn Amazon linux, restarted both
httpd
(apache) andphp-fpm
and still no effect.php_info
says/etc/php.ini
is the loaded config file. I've changed it, deleted it, no effect. Finally, I used "grep -lr 'display_errors'" to see if the directive was contained anywhere else. Found it in/etc/php-fpm.d/www.conf
. As such:php_flag[display_errors] = on
. Commented that line, restarted php-fpm (no need to restart apache, apparently), and finally my errors are not being shown to the world.