5
  • 私は窓にいます

  • PHING を使用していくつかのファイルを圧縮しています

  • 圧縮されたものがたくさんあります

  • 圧縮されるファイルに特定の phing ファイルセットが含まれているものを除いて、圧縮は機能します。

  • デバッグすると、phing の ZIP タスクで、ZipArchive::close が false を返していることがわかります。エラー文字列は「許可が拒否されました」と表示されます。マニュアルでは、 close() が実際にファイルを書き込むと述べています。

  • それは一時的な結合ではありません。言い換えれば、これが最初か最後か何であろうと起こります。他のすべてのものは機能します。これに関しては、一見何の違いもありません。

ここに私のビルド ファイルがあります: http://pastebin.org/84786 (1 か月間有効)

問題は 251 行目です。その前後の zip タスクはどちらも正常に動作します。デバッガーでは、約 150 個のファイルが zip に追加されていることがわかります。デバッガーですべてのパスが正しいことを確認しました。

ビルドは Linux で問題なく動作するようです。

zip ファイルが保存されるフォルダーを右クリックすると、読み取り専用チェック ボックスが「青く表示」され、チェックされていないか、チェックされていません。チェックボックスをオンまたはオフのままにして[OK]を押してフォルダーのプロパティに戻ると、チェックボックスは再び「青」になります。どうやらこれは仕様 ( http://support.microsoft.com/kb/326549 ) によるものであり、その 1 つのファイルでのみ発生するため、これは問題のようには見えません。

もう1つの奇妙なことは、252行目に移動して、ファイルセットを変更して、たとえば、そのすぐ上の「インポーター」モジュールのファイルを指すようにすると、zipが作成されることです。ただし、同じファイルセットの 236 行目の .tar.gz は、毎回正常に動作することが証明されています。そのため、zip タスク用の特定のファイル セットでのみ発生します。ファイル セットは tar タスクで正常に動作します。実際、その下の「パッケージ」コメントの下にある、これらのファイルも参照するすべてのタスクは作成されませんが、tar.gz ファイルは作成されます。

何を与える?

また、新しい観察結果...ファイルビューを十分に速く更新すると、両方のWindowsマシンで次のようになります。myzipfile.zip.tmpが構築されているのを見ることができますが、myzipfile.zipは作成されません。

Linux では、すべてが問題なく動作していることを再確認しました。図に行きます。

4

3 に答える 3

1

あなたの新しい観察の後、問題はTMPファイルの名前を実際のZIPファイルに変更することに関係しているようです. ファイル名に問題があるか、名前変更の時点でファイルがまだ完全に完了していないという、ある種の遅延書き込みの問題があります。

于 2010-02-01T07:38:35.053 に答える
0

Linux / Unixでの動作についてのあなたの意見に基づいて、ファイルシステム/ロックのセマンティクスの違いに見舞われたと思います。Unixでは、ファイルは自発的にロックされるだけです(他のプログラムは、「ロックを認識」していない場合でもファイルを読み取ることができます)。Windowsでは、ロックはオペレーティングシステムによって強制されます。つまり、別のプログラムで使用されている場合はすべてのファイルを読み取ることができず、ファイルを削除することもできません(そのファイルのエラーメッセージが表示されている必要があります)。推測しなければならないのですが、アクティブなプロセスによってロックされているファイルを圧縮しようとして失敗します。(他のzip操作が機能するため、書き込みは問題なく、十分なディスク容量/クォータがあると思います(FATファイルシステムで2GBを超えるファイルを書き込んでいません))

于 2010-04-08T10:16:08.033 に答える
0

問題のコードは見ていませんが、同様の問題がありました。バックスラッシュではなくスラッシュを使用しているコードが原因で発生しました。スラッシュを変更し、エスケープする必要がありました (\\)。それが役立つかどうかはわかりませんが、最大の問題を引き起こすのは小さなことです.

于 2010-04-05T16:36:09.497 に答える