在IIS上加载期间,PHPExcel导入失败
我正在使用PHPExcel从XLSX文件读取数据。在Debian和Apache上一切正常,但在初始加载期间在IIS上失败:在IIS上加载期间,PHPExcel导入失败,php,windows,iis,phpexcel,Php,Windows,Iis,Phpexcel,我正在使用PHPExcel从XLSX文件读取数据。在Debian和Apache上一切正常,但在初始加载期间在IIS上失败: $input = "C:/Inetpub/wwwroot/import/data/test.xlsx"; $objReader = new PHPExcel_Reader_Excel2007(); $objReader->setReadDataOnly(true); print "Starting..."; try {
$input = "C:/Inetpub/wwwroot/import/data/test.xlsx";
$objReader = new PHPExcel_Reader_Excel2007();
$objReader->setReadDataOnly(true);
print "Starting...";
try {
$objPHPExcel = $objReader->load($input);
print("Done!");
} catch (Exception $e) {
print "Caught exception: " . $e->getMessage();
}
不幸的是,“启动…”之后没有进一步的输出,尽管IIS日志中没有显示或跟踪错误。文件路径正确(已尝试/和/),并且具有适当的权限。也没有引发异常(tkx@Mark)
请告知:
1) 有没有办法启用某种调试来查看PHPExcel的确切停止位置以及(可能)原因
2) 要在Windows和IIS上运行此代码,我需要做哪些更改。您尝试过使用XDebug吗?您将需要一个像Netbeans或phpDesigner这样的IDE来支持它 然后使用所有文件创建项目,打开进行读取的文件,并在运行的第一行代码处添加断点 启动调试器并逐行检查每一行,直到错误发生,您可能知道是什么导致了问题。这需要很大的耐心
祝你好运 尝试确保在php.ini中启用了zip扩展:
extension=php_zip.dll
仍然奇怪的是没有引发异常。我遇到了相同的问题,并通过添加以下行解决了它:
PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);
以下是PHPExcel文档中的解释:
PHP抱怨没有找到ZipArchive
确保满足所有要求,尤其是php_zip扩展
应该启用。ZipArchive类仅在读取时是必需的
或者编写使用Zip压缩的格式(Excel2007和OOCalc)。
从版本1.7.6开始,PCLZip库与PHPExcel捆绑在一起
作为ZipArchive类的替代方案。这可以通过以下方式启用:
电话:
PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);
在调用Excel2007编写器的save方法之前。您可以恢复
要使用ZipArchive,请调用:
PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);
PHPExcel_Settings::setZipClass(PHPExcel_Settings::ZIPARCHIVE);
目前,这只允许您在不使用
需要ZipArchive(不需要阅读Excel2007或OOCal)
如果不了解更多关于配置的信息,就很难说出哪里出了问题。我让PHPExcel与IIS一起工作,没有任何问题。通常,加载文件失败会产生一些错误。你能把所有的东西都放在一个try/catch块中,看看是否有异常出现吗?谢谢你,马克,我添加了一个try&catch。不幸的是,没有例外。我还尝试了一个错误的路径&文件名,在这种情况下会抛出一个异常,因此我的代码似乎是正确的。这使得识别问题变得非常困难。读卡器代码中有一些回音被注释掉了,但是如果在Debian上的Apache下使用相同的代码加载相同的文件,那么肯定是IIS或配置问题。首先,我要仔细检查ZipArchive和SimpleXML是否已正确安装和启用。