【问题标题】:Why is mysqli_connect() an "undefined function" on my PHP server?为什么 mysqli_connect() 在我的 PHP 服务器上是一个“未定义函数”?
【发布时间】:2017-10-19 23:36:49
【问题描述】:

我在 Linux 服务器上使用 PHP 版本 5.3.3。当我尝试使用 mysql_connect() 或 mysqli_connect() 访问数据库时,我收到一条错误消息:

致命错误:调用未定义函数mysql_connect()

致命错误:调用未定义函数mysqli_connect()

你可以在这里查看我的测试页面:http://gorp.osg.ufl.edu/BOT3151/testing.php

你可以在这里看到phpinfo页面:http://gorp.osg.ufl.edu/phptest.php

相关的配置命令在这里:

'--with-mysql=shared,/usr' '--with-mysqli=shared,/usr/lib64/mysql/mysql_config' '--with-pdo-mysql=shared,/usr/lib64/mysql/mysql_config'

它还说正在解析这些 .ini 文件:

/etc/php.d/mysql.ini /etc/php.d/mysqli.ini

php.ini 文件还包括以下几行:

extension=mysql.so extension=mysqli.so

那么这里出了什么问题?服务器上是否未正确安装 mySQL?我该如何解决这个问题?

附录:我应该解释说这是在我不管理的共享服务器上。我只能通过 SFTP 访问服务器上的文件夹。但我确实有一个 php.ini 文件,并且我有一个扩展文件夹。那么这是我可以自己解决的问题还是需要服务器管理员的帮助?

【问题讨论】:

  • 5.3.3 是从 2010 年开始的。是否可以放弃那个历史版本并安装更新的东西?

标签: php mysql mysqli


【解决方案1】:

尝试通过以下方式安装 PHP MySQL:

apt-get install php5-mysql

然后,您的 MySQL 很容易使用您的 PHP 和 Apache 设置进行设置。如果您的 MySQL 已经安装,您可以先卸载它,然后在终端中尝试通过上面的代码安装 PHP MySQL。

这是最简单的方法,无需任何设置。

【讨论】:

  • 这是我自己可以做的,还是需要服务器管理员来做?我在共享服务器上只有一个文件夹。
  • 您的服务器有问题吗?所以服务器没有mysql!如果服务器支持 mysql,您需要与他们核实。如果是,那么您需要请服务器管理员修复它,因为您只有一个共享主机。
【解决方案2】:

“mysqli”扩展未加载。您无法在 phpinfo() 文件中看到该部分。

http://gorp.osg.ufl.edu/phptest.php

您应该在该页面上看到如下内容: https://drive.google.com/open?id=0B7VdYIkRLxQWaDRLYVNLeU84am8

仅仅因为您取消了extension=mysqli.so 行的注释并不意味着它会加载。文件mysqli.so 可能不在 PHP 正在查找的文件夹中或根本不存在。

检查php.ini 文件中的“extension_dir”。那你去看看mysqli.so这个文件到底有没有。

您是否重新启动了网络服务器?

【讨论】:

  • 我有一个 PHP.ini 文件和一个扩展文件夹,但我不知道该放什么。我需要获取 mysqli.so 文件吗?我在哪里得到它?我没有尝试重新启动服务器,因为(我假设)只有管理员可以这样做。或者有没有办法重新开始我自己的部分?
  • 对不起,我没有意识到你没有访问服务器的权限。您必须询问在这种情况下这样做的人,然后告诉他们 mysql 没有正确安装。同时,我会像其他人建议的那样要求升级 php。
  • 我没有找到 mysqli.so 文件,但这并不意味着它不在服务器上的某个地方。也许我的 php.ini 文件中的“extension_dir”行设置为错误的位置。现在,我将它指向了我网站内“cgi-bin”文件夹中一个名为“ext”的(空)文件夹。它应该去别的地方吗?我看到的一个消息来源说它应该说类似 extension_dir = "/usr/local/php5/lib/php/extensions/" 我在服务器的基础上找到了 "/usr/local/" 文件结构,但是没有名为“php5”的文件夹。
  • 原来问题出在我的php.ini文件上。不知何故,我自己的 cgi-bin 文件夹中只有一个会阻止加载 mysql 和 mysqli 扩展。删除 php.ini 文件后,一切正常。
  • 因链接不再存在而被否决(谷歌文档链接,而不是问题链接)。请在答案中包含所有相关详细信息,因为外部链接过期/被移动(或谷歌文档文件被删除)。
【解决方案3】:

鉴于您的 PHP 信息页面没有列出显示 MySQL 配置的部分,因此您的服务器上可能没有安装 MySQL。

【讨论】:

    【解决方案4】:

    我遇到了类似的问题。 php.ini 文件中的默认值存在一些问题。如果上面给出的答案没有解决您的问题,请查看this 答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      相关资源
      最近更新 更多