phpexcel 網頁可能暫時無法連接,或者它已永久性地移動到了新網址 ERR_INVALID_RESPONSE


最近使用phpexcel導出文件時,遇到了網頁可能暫時無法連接,或者它已永久性地移動到了新網址的問題,困擾我了好久。在網上找了好多種解決方法,除了將excel版本由excel2007降低到excel5 有點用外,其他的都嘗試無果。但是,將excel版本由excel2007降低到excel5又引起了其他問題,比如,導出報告中的批注不能生效,復制導出excel中的內容到另一個excel,顏色格式都發生變化等等。最終無可奈何,非要將這個問題從根本上解決才能消除大患。

思路如下:

1. 找到根本原因

使用$objWriter->save($filename); $this->display(); 這種方式查看生成excel報錯的具體現象

代碼如下:

$filename="test.xlsx"ob_end_clean();
ini_set('memory_limit','-1');
set_time_limit(0);
unlink($filename);
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save($filename);
$this->display();
// header("Pragma: public");
// header("Expires: 0");
// header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
// header("Content-Type:application/force-download");
// header("Content-Type:application/vnd.ms-execl");
// header("Content-Type:application/octet-stream");
// header("Content-Type:application/download");
// header('Content-Disposition:attachment;filename='.$filename);
// header("Content-Transfer-Encoding:binary");
// ob_end_clean();
// $objWriter->save( 'php://output');
// unlink($filename);
// exit;

 

修改后導報告的頁面出現如下報錯:

2. 查找出錯文件

由上圖可知,報錯的根本原因在Rels.php的第434行,找到該文件的434行,如下所示:

 

 找到了報錯點之后,再由白圖中的錯誤信息可以看出是Rels.php 260行通過如下參數調用了_writeRelationship方法,但參數中第4個值$pTarget為NULL,所以引出了Invalid parameters passed.這個報錯

 

 繼續追蹤 Rels.php 260行,如下所示,在該處調用_writeRelationship方法時通過$hyperlink->getUrl()獲取到了NULL,該方法與getHyperlink有關

 

 3.反思

1)我在系統到報告出現上述現象的情況並不是持續的,而是有些出問題,有些又沒有。

2)這個報錯與getHyperlink有關,而我的excel會設置日志超鏈接

所以我猜測是設置超鏈接時,沒有對日志url進行判斷,可能某些時候的的url是NULL,所以導致了上述問題。最終排查結果與猜想一致,解決問題。

 

出現“網頁可能暫時無法連接,或者它已永久性地移動到了新網址”這個問題的原因可能有很多,但根據實際情況抽絲剝繭,比一直在網上嘗試各種解決方法去掩蓋這個問題要好太多了,繼續加油吧!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM