致命错误:找不到类'PHPExcel_Shared_String'

时间:2014-08-05 08:58:03

标签: php codeigniter export-to-excel phpexcel

我已经将PHPExcel用于我的codeigniter应用程序并且它在localhost中运行良好,但是当我将其托管到服务器时,我收到以下错误:

  

致命错误:\ xx \ xx \ xx中找不到类'PHPExcel_Shared_String'   第36行的third_party \ PHPExcel \ Autoloader.php

5 个答案:

答案 0 :(得分:3)

最新版本的PHPExcel中的自动加载器引入了一项更改,该更改似乎与PHP的版本向后兼容< 5.3.0

如果您编辑Classes/PHPExcel/Autoloader.php文件并更改第58行,应该阅读

return spl_autoload_register(array('PHPExcel_Autoloader', 'Load'), true, true);

return spl_autoload_register(array('PHPExcel_Autoloader', 'Load'));

我已经对github上的develop分支进行了更改,以测试PHP版本并执行相应的行

虽然这不是故意的,但请注意我们确实试图让用户升级到至少版本5.3.0的PHP,因为我们无法解决使用大型电子表格的用户的任何内存/性能问题抱怨,直到我们可以使用更新版本的PHP中提供的一些新功能。不再支持PHP 5.2版本,甚至版本5.3也不会在今年年底之前得到支持

答案 1 :(得分:1)

在Linux和PHP 5.4x下长期困扰这个问题。最后,除了上面的修复之外,我还使用了更改Autoloader文件第73行的代码,该文件将$ pClassFilePath变量从相对(使用PHPEXCEL_ROOT)设置为机器文件树之后的绝对值。这可能只是一个黑客攻击,但经过几天的尝试,它保存了我的理智。希望这有助于某人。干杯

答案 2 :(得分:0)

我也有这个问题,我通过改变"共享"的权限来解决它。目录为655。

我希望它有所帮助

答案 3 :(得分:0)

如果您的服务器位于 Linux ,则可能是权限问题...只需在供应商(服务器端)添加 PHPExcel 文件夹的所有权限,然后所有子文件夹。我有同样的问题,我已经通过这种方式解决了......

答案 4 :(得分:0)

对我有用的是将PHPExcel/Autoloader.php的第81行更改为

if ((file_exists($pClassFilePath) === FALSE) || (is_readable($pClassFilePath) === FALSE)) {

if ((stream_resolve_include_path($pClassFilePath) === FALSE)) {

我更喜欢这种方法,因为它不需要我修改文件权限,并且可以在PHP 5.3.2和更高版本中使用。