【问题标题】:PHPExcel Fatal errorPHPExcel致命错误
【发布时间】:2015-11-23 14:59:58
【问题描述】:

我有一个脚本可以将一些数据从 SQL 导出并格式化到 Excel 中,这一切正常,我尝试导出的 4 件事中有 3 件事..最后一个报告如下:

Warning: fopen(/home/a/public_html/private/b/c/d/e/f/Martin's-g-23-11-2015.xls): failed to open stream: No such file or directory in /home/a/public_html/b/classes/Classes/PHPExcel/Shared/OLE/PPS/Root.php on line 90

这个很好的剂量存在,因为这个脚本对其他部门很好,而不是马丁的。它还报告以下内容:

Fatal error: Uncaught exception 'Exception' with message 'Can't open /home/a/public_html/private/b/c/d/e/f/Martin's-g-23-11-2015.xls. It may be in use or protected.' in /home/a/public_html/b/classes/Classes/PHPExcel/Shared/OLE/PPS/Root.php:93 Stack trace: #0 /home/a/public_html/b/classes/Classes/PHPExcel/Writer/Excel5.php(233): PHPExcel_Shared_OLE_PPS_Root->save('/home/a/pu...') #1 /home/a/public_html/private/b/c/d/e/exportOther.php(66): PHPExcel_Writer_Excel5->save('/home/a/pu...') #2 {main} thrown in /home/a/public_html/b/classes/Classes/PHPExcel/Shared/OLE/PPS/Root.php on line 93

我很困惑为什么这个错误,而其他一切正常,它们都运行相同的脚本,所以它报告权限错误的事实(?)很奇怪..我使用 htmlspecialchars 作为名称,所以马丁不应该是影响它,不幸的是它必须以这种方式存储,因为它是从提供给我们的文件中捕获的。

这里有人知道是什么导致了这个错误吗?

编辑 - 打印出所有它决定在 Martin 之前抛出另一个随机 / 时不应该全部排序的东西,现在抱歉! (谢谢)

【问题讨论】:

  • 您可以检查文件权限吗? ls -lah /home/a/public_html/private/b/c/d/e/f/ | grep xls
  • 检查文件的权限
  • 尝试用\ 转义',我认为php 解释错了
  • 如果你打开一个这样的 xls 文件,那么你真的在使用 PHPExcel 吗?
  • 权限为 777,因为其他出口对此工作正常,这就是为什么我有点难过。

标签: php phpexcel


【解决方案1】:

我还不能发表评论,所以我不得不发布这个作为答案:

您是否在转义 Martin 的引用,并且不能避免一开始就使用引用?

另外,下次请从您的脚本中发布导致此错误的代码。我们现在只能猜测。

【讨论】:

  • 我已经做了一个字符串替换 ($imprints=str_replace(" ' "," \' ",$imprints);) 来替换 ' for \' 来逃避它,但它似乎没有工作,同样不幸的是,我无法避免使用它,因为它是从提供给我们的外部来源收集的,要添加到我们的内部数据库中,这需要单引号存在。
  • 我会手动做一个 fopen,调整路径字符串直到它工作,然后从那里开始。
  • 我们没有任何访问服务器的权限(虽然很快就会移动,所以有一些东西..)但是刚刚把它整理好..打印出它决定在 Martin 的时间之前抛出另一个随机 / 的所有内容现在不应该全部排序对不起! (谢谢)
【解决方案2】:

问题在于您的文件名。也许你正在像这样使用 fopen

 fopen('....Martin's...');

请不要在文件名中使用特殊字符。尽量避免使用空格、文件夹分隔符 (\ /)、西班牙语波浪线和 eñes 等。

【讨论】:

  • 我已经做了一个字符串替换 ($imprints=str_replace(" ' "," \' ",$imprints);) 来替换 ' for \' 来逃避它,但它似乎没有工作,同样不幸的是,我无法避免使用它,因为它是从提供给我们的外部来源收集的,要添加到我们的内部数据库中,这需要单引号存在。
  • 分享您的代码。我们没有水晶球。你的声明或者你的 fopen 函数是错误的,所以分享你的代码,我们可以帮助你。否则只能说纯属猜测。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-09
  • 2015-09-18
  • 1970-01-01
  • 2016-02-17
  • 1970-01-01
相关资源
最近更新 更多