当我在 centos 上位于 /usr/local/lib 中的 php.ini 中进行任何更改时,这些更改似乎并未应用,例如,当我清除 php.ini 的所有内容并重新启动 Apache 时,一切正常......
我搜索了 php.ini,发现它位于系统中的一个位置... 有什么问题?我该如何修复它?
答案1
如果你不确定正在使用什么 php.ini,请在你的 webfolder 中创建一个新文件,将其命名为,phpinfo.php
例如,其中包含以下内容
<?php
phpinfo();
?>
然后在浏览器中打开网址(http://www.example.com/phpinfo.php)。它将显示正在使用的 php.ini 的路径。
当您找到正确的文件后,请进行所需的更改,并确保删除前导 ; 以防万一有一个激活设置。
重新启动 apache 并重新加载 phpinfo 页面,您更改的设置现在应该会显示出来。如果没有,请确保您的 webroot 中没有覆盖 php 设置的 .htaccess 文件。
答案2
你可能想阅读以下帖子:
提示:
- php_info 输出中的“已加载配置文件”是什么?-> 检查您是否编辑了正确的 ini 文件。
- 检查同一文件中您的设置是否多次出现。
- Gryphius 的提示也不错:取消注释该设置!(删除前导“;”)
- 检查 ini 文件的权限。Web 服务器和 php-cgi/php-fpm 需要读取权限。
- php 5 及更高版本:在测试之前,不仅要重新启动 Web 服务器,还要重新启动 php-fpm 服务。
答案3
我在我的php.ini
文件中发现了一个非常明显的错误,导致了这种症状,例如,一些 php.ini 设置没有生效。
从 php7.0 开始,#
字符 不再是有效的注释起始符。仅;
接受 。但仍有许多编辑器(例如 )vim
将“ ”后的字符显示#
为注释,因此您可能无法识别 php.ini 文件的某个部分不是可忽略的注释。
就我的情况来说,该php.ini
文件包含以下内容:
# ""
max_input_vars = 3000
由于前一行不是注释,因此max_input_vars = 3000
没有生效。它有一些副作用,导致我的下一行被忽略。
将其更改为
; ""
max_input_vars = 3000
解决了问题。
答案4
请按照以下步骤操作:
在 webroot 中创建一个文件,随意命名。我通常喜欢 x.php
# vim x.php
该文件的内容应该是这样的:
<?php
phpinfo();
?>
现在在浏览器中打开此文件,如下所示:
http://server_ip/x.php
这将显示您的 apache 正在使用的 php.ini 的位置。编辑该 php.ini 即可。