出现这个错误消息,有什么建议吗?

允许内存大小为33554432字节已耗尽(已尝试分配 43148176字节)的PHP


当前回答

做的事情:

ini_set('memory_limit', '-1');

从来都不是好事。如果你想读取一个很大的文件,最好的做法是一点一点地复制它。尝试以下代码进行最佳实践。

$path = 'path_to_file_.txt';

$file = fopen($path, 'r');
$len = 1024; // 1MB is reasonable for me. You can choose anything though, but do not make it too big
$output = fread( $file, $len );

while (!feof($file)) {
    $output .= fread( $file, $len );
}

fclose($file);

echo 'Output is: ' . $output;

其他回答

这里有两个简单的方法来增加共享主机的限制:

如果您可以访问PHP.ini文件,请更改PHP.ini中的行 如果你的线显示为32M,试试64M: memory_limit = 64M;一个脚本可能消耗的最大内存(64MB) 如果你不能访问PHP.ini,试着把这个添加到。htaccess文件中: php_value memory_limit 64M

做的事情:

ini_set('memory_limit', '-1');

从来都不是好事。如果你想读取一个很大的文件,最好的做法是一点一点地复制它。尝试以下代码进行最佳实践。

$path = 'path_to_file_.txt';

$file = fopen($path, 'r');
$len = 1024; // 1MB is reasonable for me. You can choose anything though, but do not make it too big
$output = fread( $file, $len );

while (!feof($file)) {
    $output .= fread( $file, $len );
}

fclose($file);

echo 'Output is: ' . $output;
ini_set('memory_limit', '-1');

你可以通过执行下面的代码来增加php脚本的内存:

ini_set('memory_limit','-1'); // enabled the full memory available.

并且在脚本中取消分配不需要的变量。

你的脚本占用了太多内存。在PHP中,如果有一个超出控制的循环,并且每次循环都要创建对象或向数组中添加内容,则经常会发生这种情况。

检查有无无限循环。

如果这不是问题,尝试通过将对象设置为null来销毁它们来帮助PHP。如。$OldVar = null;

还要检查实际发生错误的代码。你认为这一行会分配大量的内存吗?如果没有,试着找出哪里出了问题。