我有
PHP致命错误:Allowed memory size of 13241728 bytes exhausted (tried to allocate 24 bytes)
脚本(php)文件为400kb,输出为250kb
它打开(并反序列化)几个文件,每个文件不超过8mb(总共32Mb)。
例如:
while (($file = readdir($dir))!=false) {
$inf=file_get_contents($file);
$inf=unserialize($inf);
......
}
我正在使用fast-cgi。
为什么没有足够的内存呢?
我一直在php.ini中设置它从12Mb,16,32,50(相同的错误)到80Mb(哇它可以工作)
现在它被设置为-1
,但我想弄清楚为什么会发生这种情况以及如何解决它(可能会取消某些变量或其他东西)
答案 0 :(得分:1)
这是因为php不知道如何正确地反序列化$ inf。
它以无限的方式循环。
您想要获取的文件中有什么内容?
我认为这是因为您试图将未序列化的变量保存到自身中。
unserialize是reurisuris ...
所以你应该这样做:
$variable = unserialize ( $inf );
而不是
$inf = unserialize ( $inf );
官方php doc:http://php.net/unserialize