PHP memory_limit 本地值与 php.ini 值不匹配

PHP memory_limit 本地值与 php.ini 值不匹配

CentOS 系统。

摘要:在主和本地 php.ini 中更改了 memory_limit,但特定虚拟主机的本地值没有变化。

为了提高性能,我在 /etc/php.ini 中将 memory_limit 设置为 1024M

phpinfo() 显示服务器上其他虚拟主机的 Master 和 Local 值为 1024M。更改 /etc/php.ini 中的值会更改除一个值之外的所有值。

一个站点的本地值停留在256M。

我以为我找到了问题所在:该网站的根目录中有一个 php.ini 文件(我不知道),它有

memory_limit = 256M

我将其改为 1024M。问题解决了吗?没有。现在我不知道该去哪里找。显然,我已经重新启动了 apache(/etc/init.d/httpd restart),这通常可以解决问题。

我也关闭了 APC 缓存,尽管我不认为它会缓存 ini 文件。

最后,我尝试将其添加到 httpd.conf 中的虚拟主机:

php_value memory_limit 536870912

(是的,那将是 512MB)但这根本没有任何效果。

还有什么问题?

谢谢。

答案1

我找到了答案。站点根目录中有一个隐藏的 .htaccess 文件,该文件覆盖了所有其他值。

其中有这样一句台词:

php_value memory_limit 256M

我将其改为:

php_value memory_limit 1024M

无需重启apache,内存限制立即上升到1024M。

——————

此外,如果您phpinfo()在网站根目录中加载页面,在顶部附近您可以看到影响 PHP 的配置文件。搜索“config”,您将找到一个列表。

答案2

我只是想补充一点,可以有另一个名为的隐藏文件,.user.ini它可以设置 php 变量,比如php.ini

.user.ini尽管我尝试设置 中的值,但 中的值仍显示为 本地值php.ini。此处使用设置的值php.ini仅更新全局值,而不是本地值。更改 中的值.user.ini会更新本地值。

这是我的问题,我花了几个小时才发现这个问题。可能会为一些人节省一些时间。:)

答案3

正如另一位用户指出的那样,还有一个.user.ini可以更改值。CD 到您的 phpinfo.php 所在的项目的根目录。

执行find -type f -name "*.user.ini"

就我而言,我得到了:

./pub/.user.ini
./.user.ini
./vendor/magento/magento2-base/pub/.user.ini
./vendor/magento/magento2-base/.user.ini

于是我打开./.user.ini并相应地./pub/.user.ini更改了的值memory_limit。现在检查 phpinfo 中的本地值是否已更改。

如果没有,那么您需要使用以下命令搜索整个项目:

grep -iR memory_limit

并改变一切发生。

相关内容