Are you sure this is the correct fix? > - return crypt(encode("utf8", $pw), "\$5\$$salt\$"); > + return crypt($pw, "\$5\$$salt\$"); If I run this with $pw = "€" if get an exception: "wide character in crypt at" ??