【问题标题】:PHPExcel not working php 5.2 AppServPHPExcel 不工作 php 5.2 AppServ
【发布时间】:2015-03-17 04:22:53
【问题描述】:

我在 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

【问题讨论】:

    标签: php phpexcel phpexcelreader


    【解决方案1】:

    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() 中为“父”类做任何事情,它会正常工作。

    【讨论】:

    • 我很欣赏您的回复,显然这不是问题所在。我正在使用 call_user_func。
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-04
      • 1970-01-01
      • 2017-01-30
      相关资源
      最近更新 更多