php輸出xml(導(dǎo)出excel)數(shù)據(jù)過長時被截斷
作者: 鄭曉 分類: PHP 發(fā)布于: 2016-02-04 13:53 瀏覽:7,598 評論(6)
在使用xml來導(dǎo)出excel時,發(fā)現(xiàn)小數(shù)量(1k以下)時能正常導(dǎo)出excel,但將導(dǎo)出數(shù)量調(diào)大(幾K)時,發(fā)現(xiàn)導(dǎo)出的excel數(shù)據(jù)不全。
(在我本地是好的,在線上服務(wù)器跑就有問題。。。)
檢查導(dǎo)出的xml數(shù)據(jù),發(fā)現(xiàn)內(nèi)容被截斷了,有時連xml標(biāo)簽都不全。
首先懷疑是輸出的內(nèi)容字節(jié)過長,超出了環(huán)境配置的上限。檢查了output_buffering和nginx的fastcgi_buffer相關(guān)設(shè)置,都沒有問題。和我本地的值一樣,修改后也沒有影響。
之后就Google了下,發(fā)現(xiàn)有出現(xiàn)類似情況的,是權(quán)限問題,于是去檢查nginx的錯誤日志error.log。
發(fā)現(xiàn)在導(dǎo)出操作時有如下錯誤記錄:
2016/02/04 09:47:53 [crit] 19027#0: *967389 mkdir() "/tmp/fastcgi_temp/xxx" failed (13: Permission denied) while reading upstream, client:xxx.xxx.xx.xxx
看來確實是權(quán)限有問題,導(dǎo)出時nginx要創(chuàng)建一個/tmp/fastcgi_temp/xxx的目錄,但失敗了。
跑去/tmp下檢查,發(fā)現(xiàn)根本沒有fastcgi_temp目錄??!于是手動新建目錄/tmp/fastcgi_temp/,并設(shè)置所有者www、權(quán)限744。
重新運行導(dǎo)出,xml被截斷的問題已解決。
本文采用知識共享署名-非商業(yè)性使用 3.0 中國大陸許可協(xié)議進行許可,轉(zhuǎn)載時請注明出處及相應(yīng)鏈接。
本文永久鏈接: http://yjfs.org.cn/php-xml-excel-truncated.html
我來試試,申請友鏈