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
并改变一切发生。