允许的内存大小为 X 字节已耗尽

致命错误:允许的内存大小为 67108864 字节已耗尽(尝试分配13965430字节)

PHPInfo显示我的memory_limit为128M,所以我对为什么错误说我只有64M感到困惑。phpinfo 是否有可能错误地报告?或者 PHP 使用两个单独的 php.inis?

该错误是由我的一位同事在我不知情的情况下添加的一个主要php文件中的ini_set调用引起的。


答案 1

PHP的配置可以在多个地方设置:

  1. 主系统(通常在 /etc 的某个地方)php.ini
  2. 在Apache配置中的某个地方(httpd.conf或每个站点的.conf文件,通过php_value)
  3. CLI 和 CGI 可以有不同的(使用命令检查 CLI conf)php.iniphp -i | grep memory_limit
  4. 本地 .htaccess 文件(也php_value)
  5. 脚本内(通过ini_set())

在PHPinfo的输出中,“Master”值是编译的默认值,“Local”值是实际有效的值。它可以与默认值相同,也可以在上述任何位置被覆盖。

另请注意,PHP 通常具有不同.ini文件,用于命令行和基于 Web 服务器的操作。从命令行检查将报告与在基于 Web 的脚本中运行它时不同的值。phpinfo()


答案 2
ini_set('memory_limit', '128M'); 

php.ini  =>  memory_limit = 128M

php_value memory_limit 128M

推荐