簡體   English   中英

為什么PHP不會創建此zip文件(權限問題)

[英]Why won't PHP create this zip file (permissions issue)

  • 我在窗戶上

  • 我正在使用PHING壓縮一些文件

  • 我有很多東西被壓縮

  • 壓縮工作,但在壓縮文件中包含特定phing文件集的工作除外

  • 當我調試時,我可以在phing的ZIP任務中看到ZipArchive :: close返回false。 錯誤字符串顯示“權限被拒絕”。 在手冊中聲明close()是實際寫入文件的內容。

  • 它不是時間耦合,換句話說,它發生在第一個,最后一個或其他什么。 所有其他的工作。 這個似乎沒什么不同。

這是我的構建文件: http//pastebin.org/84786 (好一個月)

問題出在第251行。在它之前和之后的zip任務都可以正常工作。 在調試器中,我可以看到大約150個文件被添加到zip中。 我已經驗證了調試器中所有正確的路徑。

構建似乎在linux上運行良好。

當我右鍵單擊zip文件所在的文件夾時,只讀復選框為“藍色”,未選中或未選中。 我保持選中或取消選中並按下確定並返回文件夾的屬性,復選框再次為“藍色”。 顯然這是設計( http://support.microsoft.com/kb/326549 ),這似乎不是問題,因為它只發生在那個文件。

另一個奇怪的事情是,如果我轉到第252行並將文件集更改為指向例如來自其上方“importer”模塊的文件,則會創建zip。 然而,第236行的.tar.gz相同的文件集證明每次都能正常工作。 所以它只發生在zip任務的特定文件集中。 該文件集適用於tar任務。 實際上,在它下面的“package”注釋下的所有任務也引用了那些文件,但tar.gz文件卻沒有。

是什么賦予了?

另外:新的觀察...看起來在兩台Windows機器上如果我足夠快地刷新文件視圖我可以看到myzipfile.zip.tmp正在構建,但myzipfile.zip永遠不會被創建。

在linux上我只是仔細檢查了一切是否完美無缺。 去搞清楚。

在您的新觀察之后,聽起來問題與將TMP文件重命名為真實的ZIP文件有關。 要么存在文件名問題,要么存在某種延遲寫入問題,其中文件在重命名時尚未完全完成。

我沒有看到有問題的代碼,但我遇到了類似的問題。 它是由於代碼使用正斜杠而不是反斜杠而發生的。 我改變了斜線,不得不逃避它們(\\\\)。 不知道這是否有幫助,但有時它是引起最大問題的小事。

根據你在Linux / Unix上的說法,我猜你會受到文件系統/鎖定語義差異的影響。 在Unix文件中只有自動鎖定(其他程序在沒有“鎖定意識”時仍然可以讀取它們)。 在Windows中,操作系統強制執行鎖定,這意味着如果所有文件都被其他程序使用,則無法讀取所有文件,當然也不能刪除它們(您必須擁有該文件的錯誤消息)。 如果我不得不猜測,您正在嘗試壓縮由活動進程鎖定的文件,但它會失敗。 (正如你的其他zip操作工作我認為寫入不是問題,並且你有足夠的磁盤空間/配額(並且在FAT文件系統上沒有寫入大於2GB的文件))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM