#author("2020-08-21T22:35:36+09:00","","") #author("2020-08-21T22:36:23+09:00","","") **[[質問箱/5383]] [#f7197463] |RIGHT:70|LEFT:410|c |~カテゴリ|エラー・トラブル| |~サマリ|PHP7.3以降でAutoAlias機能を使うと表示がおかしくなる| |~バージョン|1.5.3| |~投稿者|[[名無しさん]]| |~状態|完了| |~投稿日|&new{2020-08-15 (土) 10:48:25};| ***質問 [#qf2dee5b] スターサーバー(PHP7.2.29)にPukiWikiをアップロードして使っています。 ロリポップに移行して使おうと思ったのですが、 AutoAliasを使う設定にしていると エイリアス名が書いてある行が表示されなくなることがあります。 書いてあっても問題なく表示されるエイリアス名と行もあれば、 エイリアス名が書いていなくても表示されない行などもありました。 ロリポップでPHP7.3(CGI、モジュール)、PHP7.4(CGI)に変えて試してどれも同じ状態になったので スターサーバーでPHP7.3.16、PHP7.4.4に変えて試したらロリポップと同じ状態になりました。 PHP7.3以降でもAutoAlias機能を使いたいので、対処法がありましたら教えていただきたいです。 よろしくお願いいたします。 回答ありがとうございます。 追記です。 pukiwiki.ini.phpの$adminpassの記入と$autoalias = 1;にしただけの初期状態1.5.3verでも発生いたします。 消えてしまった表示は、$autoalias = 0;にすると問題なく表示されます。 自分で見つけた条件は エイリアス名の中に「旅」という字が含まれているとその行が表示されなくなることがあります。 例としてAutoAliasNameに - [[旅>リンク]] と書いて、「旅にでたい」と書き込んだりするとその「旅にでたい」は消えてしまいます。 - [[旅>リンク]] を消去して、 - [[旅行>リンク]] と書いて、「旅行代」と書き込んでみたらそれは問題なく表示されました。 - [[四季の旅>リンク]] と書いて、「四季の旅に行く」は消えてしまいました。 リンクのページが存在・非存在は関係なく表示されなくなります。 - [[旅>リンク]] と書いた時ですが、「族」はエイリアス名に入れてすらいないのに「族」の入っている行も消えてしまいます。「家族」とか…… 同じ部首くらいしか共通点は見当たりませんが、自分でわかった条件はこれくらいです。 ***回答 [#sf538d8a] - もう少し再現条件を絞れないでしょうか? 現在運用されているWikiでしか再現しないのでしょうか? それともPukiWiki 1.5.3 の初期状態から同じページ名を追加するだけで再現するのでしょうか? AutoAliasName は何行ぐらいありますか? 手元で少し試してみましたが、再現させられませんでした。 -- [[umorigu]] &new{2020-08-17 (月) 01:40:46}; - 『自分で見つけた条件は エイリアス名の中に「旅」という字が含まれているとその行が表示されなくなることがあります。』→ありがとうございます。確かに再現しました。(PHP7.2で問題なくPHP7.3, 7.4で問題発生) どうも PHP7.3 で正規表現ライブラリPCREがバージョンアップして挙動が少し変わっているようです -- [[umorigu]] &new{2020-08-18 (火) 00:04:24}; - 暫定対策として (UTF-8の場合) lib/make_link.php:120 の preg_replace_callback() のオプションを '/x' から '/xu' にすると PHP7.3 でも動作するようになりました。バグですので次のバージョンで修正します。[[dev:BugTrack/2512]] -- [[umorigu]] &new{2020-08-18 (火) 02:48:24}; (lib/make_link.php:120) $this->result = array(); - $string = preg_replace_callback('/' . $this->pattern . '/x', + $string = preg_replace_callback('/' . $this->pattern . '/xu', array(& $this, 'replace'), $string); - 解決いたしました。本当にありがとうございました。 -- [[質問主]] &new{2020-08-21 (金) 22:36:23}; #comment