我遇到了这个错误
致命错误:第29行\ VBOXSVR \ ACACIASOFT \ apc \ spreadsheet \ lib \ phpexcel \ PHPExcel \ Autoloader.php中找不到类'PHPExcel_Shared_ZipStreamWrapper'
我的设置是: 主机:Windows 7 :这是我从svn
查看我的解决方案的地方Virtual Box Guest Machine: :Windows XP :我的apache,php,mysql安装在哪里。 :我还在我的虚拟盒子上添加了共享目录,以便我将其用作documentroot位置
当我改变文件记录时,我的困境开始了。它会给我的phpexcel模块带来错误,但是当我更改了文档c:/ program files / apache ....将项目复制到此目录。这不会带来任何错误。
答案 0 :(得分:14)
同样的问题一直困扰着我。 我发现如果您之前使用spl注册了自己的自动加载器功能,那么如果自动加载器无法加载所需的类,则必须返回false ,如下所示:
spl_autoload_register('my_autoload');
function my_autoload($className)
{
if(file_exists(CLASS_PREFIX.".$className.php"))
{
require_once(CLASS_PREFIX.".$className.php");
}
else
{
return false;
}
}
答案 1 :(得分:4)
看起来你正在运行其他一些带有自己的自动加载器的库,它会干扰PHPExcel自动加载器。已修改最新的SVN代码以防止出现此问题。
在/Classes/PHPExcel/Autoloader.php脚本本身中,更改:
public static function Register() {
return spl_autoload_register(array('PHPExcel_Autoloader', 'Load'));
} // function Register()
到
public static function Register() {
if (function_exists('__autoload')) {
// Register any existing autoloader function with SPL, so we don't get any clashes
spl_autoload_register('__autoload');
}
// Register ourselves with SPL
return spl_autoload_register(array('PHPExcel_Autoloader', 'Load'));
} // function Register()
答案 2 :(得分:2)
如果有人碰巧在Linux上,则此错误可能是由错误的使用权限引起的。
我有同样的问题,但我更改了'Shared'文件夹的所有者,并将其设置为'www-data'用户,这是我系统上的apache用户(chown www-data:www-data共享)。这修复了“Class'PHPExcel_Shared_ZipStreamWrapper'找不到”错误。
然而,这不是完整的修复,您真正需要做的是确保将PHPExcel文件夹中的文件夹和文件分配给正确的用户,并确保它们具有正确的权限。这是你如何做到的:
您需要将PHPExcel文件夹及其中的每个项目分配给www-data用户,以便Apache可以访问这些文件。确保您位于PHPExcel文件夹下一级,然后运行此命令:
sudo chown -R www-data:www-data PHPExcel
就是这样。 Apache应该能够访问所有文件,并且应该解决错误。
答案 3 :(得分:0)
你必须在php扩展名上启用zip dll
答案 4 :(得分:0)
好的我知道它已经在一年前了,但是因为这个问题发生在我的设置(在具有明确用户权限的Active Directory网络中运行Windows 7 Professional的虚拟机),几天前我想分享我的解决方案,也许这将有助于其他人节省一些时间:
我发现了2个问题(仅限 WINDOWS HOSTS!):
我的解决方案:更改php代码以在默认情况下使用DIRECTORY_SEPARATOR常量 在文件中:PHPExcel.php(第32行),像这样:
//OLD: define('PHPEXCEL_ROOT', dirname(__FILE__) . '/');
define('PHPEXCEL_ROOT', dirname(__FILE__) . DIRECTORY_SEPARATOR);
还有2个要更改的文件:“IOFactory.php”和“Settings.php”(第34行):
//OLD: define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../');
define('PHPEXCEL_ROOT', dirname(__FILE__) . DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR);
我的替代方法:要解决此问题,您可以删除文件“autoload.php”中的“is_readable”检查更改第77行:
// if ((file_exists($pClassFilePath) === FALSE) || (is_readable($pClassFilePath) === FALSE)) {
if (file_exists($pClassFilePath) === FALSE) {