PHP 连接到 MySQL 时内存不足

PHP 连接到 MySQL 时内存不足

我在 64 位 Centos 5.7 上安装了几乎全新的 CPanel。它位于具有 2G RAM 的 VPS 上。在 php.ini 文件中,memory_limit=256M。尽管这些限制相对较大,但我在执行连接到 mysql 等简单操作时仍会遇到内存不足错误。我多次重建了 Apache 和 PHP,启用的额外扩展只有 gd 和 mysql。

CPanel 插件是 MailScanner 和 Firewall。

示例错误:致命错误:内存不足(已分配 7077888)(试图分配 1966080 字节)

我检查了代码,没有奇怪的循环或任何可能消耗那么多内存的东西,服务器几乎没有负载。(唯一看起来使用 CPU 的东西是 MailScanner)任何关于检查什么的想法都会有所帮助。

我的 php.ini(已通过 phpinfo() 验证) max_execution_time = 30 max_input_time = 60 memory_limit = 256M

最初我们安装了 suphp 扩展,但安装后我们甚至无法显示一个简单的 phpinfo() 页面。删除 suphp 扩展后,非常简单的页面就可以正常工作(只是 include() 其他文件,但大多数其他操作都会导致内存不足错误)。

答案1

你确定它正在加载那个 php.ini 吗?1966080 字节小于 2mb(除非我弄错了)。如果你有命令行访问权限,请运行:php -i | grep php.ini

他们应该给你指定正在使用哪个 php.ini 的行。

答案2

我发现了这个问题,只是想发帖以防其他人遇到同样的问题。最终发现是 Smarty 用于预编译模板的目录中的权限问题。显然,如果 Smarty 没有适当的权限访问模板编译的临时目录,它会尝试在内存中完成所有操作,如果页面太大,它会抛出内存不足错误。重置 template_c 和缓存目录的权限后,一切都开始正常工作。

相关内容