【问题标题】:How to see why mysql_connect fails?如何查看 mysql_connect 失败的原因?
【发布时间】:2020-09-29 20:17:22
【问题描述】:

我已经安装了 Linux (Mint) 和 LAMP,但是

mysql_connect('localhost', 'user', 'password') 

无论我尝试什么都失败了。

我花了至少 6 个小时来修复它。

phpinfo()

工作中

sudo mysql -u user -p

作品

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
Apache Full                ALLOW       Anywhere                  
3306                       ALLOW       Anywhere                  
Apache Full (v6)           ALLOW       Anywhere (v6)             
3306 (v6)                  ALLOW       Anywhere (v6

我还能尝试什么? 我该如何调试?我已经在谷歌上搜索了几个小时。 唯一不标准的是我已经安装了php 5.6,因为我需要它,“php -v”返回:

PHP 5.6.40-30+ubuntu20.04.1+deb.sury.org+1 (cli) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologie

【问题讨论】:

  • 失败?有什么错误?它是如何失败的?可以从mysql_connect 返回的内容开始。我们假设false?
  • 命令行中的 php -v 不一定是网络服务器上的 PHP。浏览器中phpinfo()显示的是什么版本的PHP?
  • PHP5.6 自 2019 年起停产,mysql_*() 函数已从 7 中删除。升级您的 PHP 版本和工作流程。 php.net/supported-versions.phpphp.net/manual/en/book.pdo.php
  • 2020 年甚至不要从 mysql_*() 函数开始。如果你必须支持一些遗留应用程序,那很好,否则就忘了它。
  • 它失败了,因为它非常非常旧。就像奶奶试图摆弄一杯热牛奶

标签: php mysql


【解决方案1】:

如果你真的需要使用 mysql_connect 和那个旧 PHP:

https://www.php.net/mysql_connect 的第一个示例显示了您如何查看错误...我不确定您在哪里度过了这 6 个小时 :)

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error()); // MAGIC LINE
}
echo 'Connected successfully';
mysql_close($link);
?>

我和其他所有人的建议是(正如您问题下的 cmets 所建议的那样):升级到 PHP7.4,然后使用适当的 PDO/Mysqli 连接器

【讨论】:

  • 谢谢。我收到“无法连接:服务器向客户端发送未知字符集。请向开发人员报告”。
  • @JakeB。您可能正在连接到现代 MySQL 服务器。旧版 MySQL 扩展的问题在于它没有得到适当的维护,因此它只是缺乏基本功能,例如适当的 Unicode 支持,当然,它没有被更新以包含更新的 MySQL 功能。
  • 是的。如果他只是升级他的整个设置会容易得多。
猜你喜欢
  • 2021-11-05
  • 1970-01-01
  • 2020-01-08
  • 2013-08-05
  • 2021-12-09
  • 2019-03-23
  • 1970-01-01
  • 2012-02-03
  • 1970-01-01
相关资源
最近更新 更多