php.ini的更改没有任何效果。

当我在CentOS上的/usr/local/lib中进行php.ini文件的任何更改时,这些更改似乎没有生效。例如,当我清空php.ini的所有内容并重新启动Apache时,一切都正常运行。 我搜索了php.ini文件,并且它只存在一个位置...问题出在哪里?我该如何解决这个问题?

你是怎么搜索这个文件的?你用了什么命令?你查看了哪些路径? - Khaled
@Khaled 我用这种方式搜索:whereis php.ini - Fcoder
1你有多少个php.ini文件(例如,使用find / -name php.ini -print进行检查)? - Hennes
尝试使用 find /etc -name php.ini - Khaled
我只有一个在:/usr/local/lib/php.ini - Fcoder
7个回答

如果你不确定正在使用的是哪个php.ini文件,可以在你的网页文件夹中创建一个新文件,例如命名为phpinfo.php,并将以下内容添加进去。
<?php
phpinfo();
?>
然后在浏览器中打开网址(http://www.example.com/phpinfo.php)。它会显示正在使用的php.ini文件的路径。 当您确定了正确的文件后,请进行所需的更改,并确保移除前导的注释分号; 以激活设置。 重启Apache并重新加载phpinfo页面,您的更改设置现在应该显示出来。如果没有显示,确保您的网站根目录中没有.htaccess文件覆盖php设置。

配置文件(php.ini)路径:/usr/local/lib 加载的配置文件:/usr/local/lib/php.ini - Fcoder
你试图改变什么值?你是否移除了前面的分号以激活该设置? - Gryphius
1省略 PHP 的结束标签 ?> 是一个好的做法吗? - Omar Tariq

你可能想要阅读以下帖子: 提示:
  1. php_info 输出中的 "Loaded Configuration File" 是什么?-> 检查您是否编辑了正确的 ini 文件。
  2. 检查同一文件中设置的多个出现。
  3. Gryphius 的提示也不错:取消注释该设置!(删除前导的 ";")
  4. 检查 ini 文件的权限。Web 服务器和 php-cgi/php-fpm 需要读取权限。
  5. php 5 及更高版本:在测试之前不仅要重新启动 Web 服务器,还要重新启动 php-fpm 服务。

我刚刚切换到fast-cgi,并重新启动了fpm,这解决了问题,谢谢。 - Dave
6是的,第五点是不寻常的步骤。谢谢。 - Tibor Nagy
第5点对我也是解决方案!我尝试了其他所有方法,发现只有在完全重启后才会生效。只是不确定需要重新启动哪个服务才能生效!谢谢你。 - konung
在Amazon Linux上,重新启动了httpd(apache)和php-fpm,但仍然没有效果。php_info显示/etc/php.ini是加载的配置文件。我已经更改了它,删除了它,但没有效果。最后,我使用了“grep -lr 'display_errors'”来查看指令是否存在于其他任何地方。在/etc/php-fpm.d/www.conf中找到了它。如下所示:php_flag[display_errors] = on。我注释掉了那一行,重新启动了php-fpm(显然不需要重新启动apache),最终我的错误信息不再对外显示。 - Buttle Butkus

我在我的php.ini文件中发现了一个非常明显的错误,导致了这个很明显的症状,例如一些php.ini设置没有生效。 从php7.0开始,"#"字符不再是有效的注释起始符号,只有";"被接受。但是仍然有许多编辑器,比如vim,将"# "后面的字符显示为注释,所以你可能无法意识到php.ini文件的某个部分不是可忽略的注释。 在我的情况下,php.ini文件包含了以下内容:
# ""
max_input_vars = 3000
max_input_vars = 3000没有生效,因为前一行不是注释。它有一些副作用,导致我的下一行被忽略。 将其更改为
; ""
max_input_vars = 3000
解决了问题。

如果你正在使用Apache,你应该知道有两个ini文件:
/etc/php/7.4/apache2/php.ini

并且

/etc/php/7.4/cli/php.ini
你应该更改位于/etc/php/7.4/apache2/php.ini的那个。 将7.4替换为你的php版本

按照以下步骤操作: 在您的网站根目录下创建一个文件,可以随意命名。我通常喜欢使用x.php作为文件名。
 # vim x.php
文件的内容应该是这样的:
<?php
phpinfo();
?>
现在像这样在浏览器中打开这个文件:
http://server_ip/x.php
这将显示您的Apache正在使用的php.ini文件的位置。 编辑该php.ini文件,它将正常工作。

配置文件(php.ini)路径:/usr/local/lib 已加载的配置文件:/usr/local/lib/php.ini - Fcoder
这意味着你只使用这个文件。对这个文件的任何更改都会反映在Apache上。你可以通过相同的URL进行测试。在php.ini中更改某个变量,这将在浏览器中的x.php文件中得到反映。 - Napster_X

你可能在你的网站根目录下有一个php.ini文件。

还不能在这里发表评论,但是: 如果您保留更改并重新启动Apache,是否有效? 如果是这样,原因可能是PHP作为Apache模块运行。 如果您希望更改生效而无需重新启动Web服务器,请使用php-cgi。 此页面解释了安装和配置;在页面中搜索“作为Apache模块”或“PHP 5作为CGI二进制文件”。