PHPExcel致命错误:允许的内存大小

PHPExcel致命错误:允许的内存大小,php,memory,phpexcel,Php,Memory,Phpexcel,我使用PHPexcel打开一个.xlsx文件(在ovh互惠化服务器上),遇到了我解决的问题 保存修改后的文件时出现新问题: “致命错误:第870行/home/observatvu/www/libraries/phpexcel/library/phpexcel/Cell.php中允许的内存大小为536870912字节(尝试分配49字节)” 我在互联网上阅读了许多问题和答案,并尝试了一些解决方案,如: 内存\u limit in.htaccess=>服务器上出现问题,它无法工作 ini_set('

我使用PHPexcel打开一个.xlsx文件(在ovh互惠化服务器上),遇到了我解决的问题

保存修改后的文件时出现新问题:

“致命错误:第870行/home/observatvu/www/libraries/phpexcel/library/phpexcel/Cell.php中允许的内存大小为536870912字节(尝试分配49字节)”

我在互联网上阅读了许多问题和答案,并尝试了一些解决方案,如:

  • 内存\u limit in.htaccess=>服务器上出现问题,它无法工作
  • ini_set('memory_limit','512M')=>我有上面的消息。。。对于其他ini_设置值,我有其他大小的内存错误,但没有保存文件
  • 我不能修改php.ini
我试图在保存文件时编写setPreCalculateFormulas(false),但始终存在相同的问题

有人能帮我找到一个有效的解决方案吗

如果您尝试过,谢谢您

$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;
$cacheSettings = array( 'memoryCacheSize' => '1024MB');
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings); 
那就不行了

您的PHP限制为536870912(512MB)

线路

$cacheSettings = array( 'memoryCacheSize' => '1024MB');
正在告诉PHPExcel在切换到使用之前使用1024MB的PHP内存php://temp 用于缓存。。。。这就是参数名
memoryCacheSize
memory元素的含义

memoryCacheSize值使用小于PHP内存限制量的

$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;
$cacheSettings = array( 'memoryCacheSize' => '256MB');
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings); 

如果无法使用PHPExcel的缓存系统,可以尝试:。 它设计用于处理任何大小的文件,而不会导致内存或时间限制问题


您只需要10MB的可用内存,就可以读取所需的所有XLSX文件:)

将不正确的单元格字母传递给phpExcel函数时,可能会发生此类错误,例如:

$objPHPExcel->getActiveSheet()->setCellValue($cell, $value);
确保不要像这样增加列字母:

chr(ord($col) + 1);
最好使用自定义增量函数,如:

//$start = 'A'
private function _incrementCol($start, $offset)
{
    $result = $start;
    for($i = 1; $i <= $offset; $i++) {
        $result++;
    }
    return $result;
}
/$start='A'
私有函数_incrementCol($start,$offset)
{
$result=$start;

对于($i=1;$i可能的重复项您是否尝试过任何旨在减少其使用的内存量的方法?我尝试过$cacheMethod=PHPExcel\u CachedObjectStorageFactory::cache\u to\u phpTemp;$cacheSettings=array('memoryCacheSize'=>'1024MB');PHPExcel\u设置::setCacheStorageMethod($cacheMethod,$cacheSettings);谢谢您的回答。我刚刚尝试了您的解决方案,但出现了相同的错误。我在PHPExcel中尝试了单元格缓存选项,但出现了相同的错误…您需要为设置确定正确的缓存方法和参数…为什么不将设置保留为php://temp 默认值?对不起,我不明白。。。“将设置留给php://temp 默认值?=>什么意思?这样做:$cacheMethod=PHPExcel\u CachedObjectStorageFactory::cache\u to\u phpTemp;PHPExcel\u Settings::setCacheStorageMethod($cacheMethod);是否在加载文件之前设置此项?谢谢您的评论。我将尝试您的解决方案