* [PLUGIN] dumpプラグインが空のファイルを格納できない [#we5b744b]
- 元タイトル: dumpプラグインのバグ

-ページ: [[BugTrack2]]
-投稿者: [[1]]
-優先順位: 低
-状態: 完了
-カテゴリー: プラグイン
-投稿日: 2005-02-17 (木) 19:06:49
-バージョン: 1.4.5-1.4.5_1

#contents

** 修正 [#kb0dab87]
- [[cvs:plugin/dump.inc.php]] (1.36)

**メッセージ [#d7951c33]
dumpプラグインでバックアップの対象となるファイルの中に0バイトのものがあるとRuntime errorと表示される。
エラーメッセージは以下の通り
 Error message : wiki/0bytefile.txt is not found or not readable.

0bytefile.txtは実際に0バイトだったファイル名が入ります。~
0バイトのページは削除すればいいですが、InterWikiNameページは削除できないので((必ず書く必要があるのかもしれませんが。。))コメントを入れるなどして対応しています。
----
-[[BugTrack/701]]にて既知です。 --  &new{2005-02-18 (金) 00:19:20};
-そうですね(既報というのは)。FrontPage、InterWikiNameなどのページを削除した直後にPukiWikiにアクセスすると、それぞれのページを touch() で作成するため、このような状況になります。 -- [[henoheno]] &new{2005-02-20 (日) 21:17:52};
-ご指摘ありがとうございます。1.4.5から標準のプラグインになったので試しに使ってみたのですが、まだ開発途上のようですね。このページの内容も含めてhenohenoさんのTODOが既に[[BugTrack/701]]でまとめられているので一旦クローズとした方が良いでしょうか? -- [[1]] &new{2005-02-21 (月) 19:31:32};
-こんにちは :) このBugTrackの投稿者が[[1]]さんであるのかどうかが名前で判別できません・・・ (^^; ((ひょっとして2ちゃんねる掲示板のノリで書かれていますか? ここは名前と同じ名前のページ名が自然にできる場所ですから、何かしら個性的な名前の方が後々便利ですよ ;) ))少し様子を見てから、クローズとさせていただきたいと思います。 -- [[henoheno]] &new{2005-02-21 (月) 22:43:37};
- [[filesize()関数>PHP関数:filesize]]の戻り値を FALSEと比較するときに''==''演算子を使っているようです。ここを''===''演算子にすれば0バイトのときに引っかからなくなると思いますが。 -- &new{2005-03-03 (木) 16:09:12};
 diff -u -r1.34 dump.inc.php
 --- dump.inc.php	23 Jan 2005 07:24:11 -0000	1.34
 +++ dump.inc.php	3 Mar 2005 06:50:37 -0000
 @@ -430,7 +430,7 @@
  
  			// ファイルサイズを取得
  			$size = filesize($name);
 -			if ($size == FALSE) {
 +			if ($size === FALSE) {
  				@unlink($this->filename);
  				die_message($name . ' is not found or not readable.');
  			}
-コメントありがとうございます :) 確認しました。確かにその通りの様です。他の部分は(ちゃんと、意図的に) === 演算子を使っているようです。1さんの疑問が解決につながった様で何よりです :) -- [[henoheno]] &new{2005-03-27 (日) 21:15:09};

//#comment

** 返り値としてFALSE だけでなく、FALSE として評価される 0 や "" などといった値を返す可能性もある関数 [#z575ab92]
- [[論理型 (boolean): boolean への変換 - PHP Manual>http://jp2.php.net/manual/ja/language.types.boolean.php#language.types.boolean.casting]]

*** readdir 関数 [#ad519e69]
- [[PHP関数:readdir]] によると、「この関数は論理値 FALSE を返す可能性がありますが、FALSE として評価される 0 や "" といった値を返す可能性もあります。(中略)。この関数の返り値を調べるには ===演算子 を使用してください。
」だそうです。&br;なので、while (FALSE != ($file = readdir($dp))) と同じ意味の、while ($file = readdir($dp)) を、while (FALSE !== ($file = readdir($dp))) と修正した方が無難だと思います。 --  &new{2007-11-03 (土) 17:48:40};
~2007-11-03 (土) 12:00:00 時点のCVS
 lib\file.php(562):    while ($file = readdir($dp))
 lib\file.php(737):    while ($file = readdir($dp))
 
 plugin\attach.inc.php(821):    while ($file = readdir($dir)) {
 
 plugin\dump.inc.php(394):    while ($filename = readdir($dp)) {
 
 plugin\rename.inc.php(322):    while ($file = readdir($dir)) {

- ChangeLog 2007-11-04 00:12
-- [[cvs:lib/file.php]] (1.93)
-- [[cvs:plugin/attach.inc.php]] (1.89)
-- [[cvs:plugin/dump.inc.php]] (1.41)
-- [[cvs:plugin/rename.inc.php]] (1.37)
- コメント & ピックアップありがとうございます。この指摘は「関数の仕様通りに書きましょう」というものであり、このBugTrackのテーマとは異なりますので、後でもっといいページがあったならばそちらに移動しましょう。今のPukiWikiを普通に使っている分には、今回の修正がなかったとしても特段影響はないと思いますが、きちんと書くに越したことはありません。 -- [[henoheno]] &new{2007-11-04 (日) 23:05:00};
- 関連: [[BugTrack2/10]] --  &new{2009-05-07 (木) 23:49:42};
-- [[BugTrack2/236]] より移動 --  &new{2009-05-08 (金) 14:51:25};
- tRIamgDJV -- [[fyjhky]] &new{2013-07-17 (水) 13:48:16};

#comment
//#comment

*** fgets 関数 [#a8f7d2f3]
- [[cvs:lib/func.php]] のis_freeze() のように直後の比較条件で"0" などがFALSE 判定されるような場合は別としても、[[cvs:lib/file.php]] のfile_head() で使われている[[PHP関数:fgets]]は直した方がいいのではないでしょうか。 --  &new{2009-05-08 (金) 15:46:53};
-- 意図的に"" や"0" を除いているのなら、却下ですが。 --  &new{2009-05-08 (金) 15:46:53};

#comment
//#comment

*** PukiWiki: file_head 関数 [#h1ef48cc]
- [[cvs:lib/file.php]] に存在するFALSE または配列を返す関数ですが、「要素の数がゼロである 配列」が返ってくる場合もあります。[[cvs:plugin/recent.inc.php]] では「==」 で比較しているので、データが空である場合も「ファイルが開けない」とエラーが表示されてしまうようです。([[official:質問箱4/454]]) --  &new{2009-05-08 (金) 15:46:53};
-- 少し場違いな話題かもしれませんが。 --  &new{2009-05-08 (金) 15:46:53};

#comment
//#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.041 sec.

OSDN