1
require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();

$data->read('Senator.xls');

我的 error.log 中出现以下错误

PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes)

奇怪的是,这在我的开发实例上工作得很好。但不在生产中。我应该寻找什么差异。

注意:两个环境都有 memory_limit=128M

4

2 回答 2

2

可能一台服务器具有 64 位处理器。GetInt4d 位移不适用于 64 位处理器。

使用此 hack 确保 <<24 块在 32 位和 64 位系统上的正确结果,只需将 GetInt4d 函数的代码替换为以下内容: Location : Excel/olereader.inc line no-27 ,function GetInt4d()

$_or_24 = ord($data[$pos+3]);

if ($_or_24>=128) $_ord_24 = -abs((256-$_or_24) << 24); else $_ord_24 = ($_or_24&127) << 24;

return ord($data[$pos]) | (ord($data[$pos+1]) << 8) | (ord($data[$pos+2]) << 16) | $_ord_24;

于 2015-04-09T11:49:01.790 回答
0

取决于女巫线,它给出了错误:我的是

PHP Fatal error:  Allowed memory size of 67108864 bytes exhausted (tried to allocate 32 bytes) in [] on line 1688

这是功能

addcell($row, $col, $string, $info=null) {

特别是 foreach 循环。据我了解,它是关于颜色单元偏移或类似信息的信息,所以我评论了循环,现在它使用的内存要少得多。

如果您不需要执行此类代码,您可以对其进行注释并尝试。

于 2014-02-14T12:51:46.733 回答