0

我在 Windows 机器上的 AppServ 中使用 php 5.2.6,PHPExcel 似乎无法正常工作并且不会产生错误。我将 error_reporting 设置为 E_ALL。

在我使用 php 5.6 并使用 vagrant/homestead 的 Linux 机器上,相同的代码可以正常工作。

这是我的代码: http: //pastebin.com/6dJC8gaP

我添加了一些回声以查看它到底死在哪里,它似乎在第 9 行死了。我以为这可能是 php 5.2 和 :: 引用的问题,所以我尝试使用 call_user_func,它也适用于我的 php 5.6但不适用于我的 php 5.2

4

2 回答 2

0

http://php.net/manual/en/function.call-user-func.php

<?php

namespace Foobar;

class Foo {
    static public function test() {
        print "Hello world!\n";
    }
}

call_user_func(__NAMESPACE__ .'\Foo::test'); // As of PHP 5.3.0
call_user_func(array(__NAMESPACE__ .'\Foo', 'test')); // As of PHP 5.3.0

?>

每页:

引用:

在 PHP v5.2 中,您/可以/ 使用 call_user_func(array($this, 'parent::SOME_FUNCTION'))。

如果你没有自定义的 __autoload() 函数,你很高兴。

如果你有自定义的 __autoload(),你需要让它知道 `parent'。就像是:

基本原理:PHP 5.2 出人意料地尝试自动加载名为“parent”的类。但是,如果您不在 __autoload() 中为“父”类做任何事情,它会正常工作。

于 2015-03-17T04:34:46.173 回答
0

在 PHPExcel/Settings.php 中有两个对 libxml_disable_entity_loader 函数的引用。

该功能直到 php 5.2.11 才可用,并且它前面的 @ 导致了一个静默错误。

我按照他们的建议做了,并将该函数包装在 function_exist 检查中。现在一切正常。

参考:https ://github.com/PHPOffice/PHPExcel/issues/339

于 2015-03-17T04:59:17.270 回答