auth.php: PHP8.0で必須になったcryptの$saltが指定されていない場所がある

メッセージ

PHP8.0でcrypt関数の$salt引数はオプションではなくなり必須になったらしいのですが、 auth.phpで省略されたままです。

参考:https://www.php.net/manual/ja/function.crypt.php

あまり読み込んでないのでどういう意図の記述なのかは理解しきれてないのですが…
とりあえず、pukiwiki.ini.phpでのパスワードの定義で

$adminpass = '{x-php-crypt}' . '';

というようにすると、凍結などの管理者パスワードを入力したあとのパスワードチェックの処理で

Fatal error: Uncaught ArgumentCountError: crypt() expects exactly 2 arguments, 1 given in /**/lib/auth.php:67 Stack trace: ~~ #6 {main} thrown in /**/lib/auth.php on line 67

となります。

対処法案

($salt != '' ? crypt($phrase, $salt) : crypt($phrase))

となっていますが、どうせ空文字列なんですしそのまま

(crypt($phrase, $salt))

でいいんじゃないでしょうか。

PHP5とPHP7の環境(Wandbox)で適当に確認しましたが、引数を渡さない場合と空文字列を渡した場合は同じ結果になるみたいです。

in

$br = "\n";
echo "crypt('qwerty'):       " . crypt('qwerty') . $br;
echo "crypt('qwerty'):       " . crypt('qwerty') . $br;
echo "crypt('qwerty', ''):   " . crypt('qwerty', '') . $br;
echo "crypt('qwerty', ''):   " . crypt('qwerty', '') . $br;
echo "crypt('qwerty', null): " . crypt('qwerty', null) . $br;
echo "crypt('qwerty', null): " . crypt('qwerty', null) . $br;
echo "crypt('qwerty', 'qw'): " . crypt('qwerty', 'qw') . $br;
echo "crypt('qwerty', 'qw'): " . crypt('qwerty', 'qw') . $br;

out

crypt('qwerty'):       $1$nZuf80oX$ydbPyJRKp69Dj15Pm5j8n/
crypt('qwerty'):       $1$Ks0/OT4J$iVB.NzaDBYI5qijc2gROI.
crypt('qwerty', ''):   $1$oapwvXW6$7vbEIIA.emSYB.FXoCKWh1
crypt('qwerty', ''):   $1$7/Rg8h7Z$c8BSuNj.drF1hzHzc83Lt.
crypt('qwerty', null): $1$FxaVjEZR$3qKqcnsYYefTcCC0chC0D0
crypt('qwerty', null): $1$8bdqDZ5v$dB4nj4wJjuC3SFsNIZKqV.
crypt('qwerty', 'qw'): qwDyM1db9iOPI
crypt('qwerty', 'qw'): qwDyM1db9iOPI

なお、PHP8ではcrypt("~", '')は文字列'*0'を返すようです

in

$br = "\n";
echo "crypt('qwerty', ''):   " . crypt('qwerty', '') . $br;
echo "crypt('qwerty', ''):   " . crypt('qwerty', '') . $br;

out

crypt('qwerty', ''):   *0
crypt('qwerty', ''):   *0



トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-12-27 (火) 23:47:09
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.190 sec.

SourceForge