#author("2016-12-26T09:42:51+09:00","","") **[[質問箱5/249]] [#l2a56486] #author("2018-03-11T22:12:49+09:00;2016-12-26T09:42:51+09:00","","") **[[質問箱/5249]] [#l2a56486] |RIGHT:70|LEFT:410|c |~カテゴリ|動作環境| |~サマリ|php7.1.0でnewプラグインが動かない| |~バージョン|1.5.1| |~投稿者|[[kmi]]| |~状態|完了| |~投稿日|&new{2016-12-19 (月) 16:28:39};| ***質問 [#dc6074ac] #setlinebreak(on) 動作環境 ・Windows7 Pro SP1 ・Apache 2.4.23 ・PHP 7.1.0 ・PukiWiki 1.5.1 localhost上でApacheを動かし、pukiwikiを資料整理につかっております。 以前、PHP5.5.21+PukiWiki1.5.0で運用していたコンテンツをdumpして、上記新環境にrestoreしたところ、 newプラグインの"&new{2016-12-19};"という記述が "&new([nodate]){date}: Invalid date string;" というエラー表示になりました。 PukiWiki 1.5.1はPHP 7.0には対応している、とのことですが、 PHP 7.1.0には対応していないのでしょうか? #setlinebreak(default) ***回答 [#sa68d197] - PukiWiki 1.5.0ではどう表示されていましたか? &new(nodate){2016-12-21 (水) 20:58:15}; のように書くと Now! だけが表示されます 1.5.0 1.5.1で違いは無いようです -- [[umorigu]] &new{2016-12-21 (水) 23:29:17}; - 勝手ながら、質問部分のwiki書式を変更させていただきました。変更している時にwiki ソースを見て気が付きましたが、1.5.0 -> 1.5.1 でのnew プラグインにかかわる変更点といえば、[[更新履歴>PukiWiki/Download/1.5.1#v3e97e35]]にある[[dev:BugTrack/2120]]ですね。''New!'' の機能が動作しない環境があるというバグの修正だったはずですが、そのために入力チェックが少し厳格になったので時刻"00:00:00"を省略して年月日"2016-12-19"だけを渡すという便利機能のような動作が使えなくなっていたと思います。 -- &new{2016-12-22 (木) 00:10:01}; - なるほど。そういう使い方があったんですね。確かにnewプラグインの説明には「日付文字列はPHP関数:strtotimeが認識できる書式である必要があります」とあるのにそうなっていない、今の挙動はバグです。strtotimeにfallbackするようにします -- [[umorigu]] &new{2016-12-22 (木) 09:14:37}; - PukiWiki 1.5.2 で修正されますが、plugin/new.inc.php の43行目に以下の2行を追加することで、1.5.0とほぼ同じ動作になります -- [[umorigu]] &new{2016-12-23 (金) 16:40:19}; (plugin/new.inc.php:43) . '-' . substr('0' . $dm[3], -2) . ' ' . $dm[4]; $timestamp = strtotime($iso8601_date); + } else { + $timestamp = strtotime($date); } if ($timestamp === -1 || $timestamp === FALSE) { return '&new([nodate]){date}: Invalid date string;'; -- [[dev:BugTrack/2410]] -- &new{2016-12-24 (土) 00:05:34}; -- 上記修正により、動作することを確認いたしました。 -- [[kmi]] &new{2016-12-26 (月) 09:41:14}; #comment