我正在尝试在PHP中创建一个随机字符串,我绝对没有输出:
<?php
function RandomString()
{
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randstring = '';
for ($i = 0; $i < 10; $i++) {
$randstring = $characters[rand(0, strlen($characters))];
}
return $randstring;
}
RandomString();
echo $randstring;
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
当我尝试从 PHP 7.3 升级到 PHP 7.4 时,收到此错误:
执行 caching_sha2 auth 109 时出现意外的服务器响应
在我看来,这表明 PHP 7.4 MySQLi 正在尝试使用该caching_sha2_password插件。这篇文章指出 PHP MySQLi 不支持该插件(它也暗示未来会支持它),但由于 PHP 7.4 是新的并且似乎正在尝试使用它,我想它应该可以工作。此外,错误消息与不受支持的情况不同(访问被拒绝与身份验证方法未知)。
所以我将我的 MySQL 身份验证插件更改为caching_sha2_password(使用与以前相同的密码):
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
但这导致了另一个错误:
用户 'root'@'localhost' 的访问被拒绝(使用密码:YES)。
切换回 PHP 7.3 并mysql_native_password再次运行。
我对两个插件、同一个网站使用了相同的密码,并应用了相同的 php.ini 更改。但是,我没有更改任何mysqli配置。MySQL 的日志什么也没显示,apache2 日志只显示“拒绝访问”错误消息。
php7.4-mysqli 支持caching_sha2_password吗?是的
为什么我的密码被拒绝,我该如何解决? 查看我的后续问题
另外,如果 MySQLi 仍然不支持该插件:我如何使用mysql_native_password它?