调用未定义的函数mysql_connect

时间:2011-12-18 11:28:55

标签: windows php

我刚在家用电脑上安装了PHP和Apache。当我尝试调用函数mysql_connect时,我得到:

fatal error: call to undefined function mysql_connect.

我已经加载了php.ini,其中我有未注释的行extension=php_mysql.dllextension=php_mysqli.dll并将扩展目录更改为extension_dir = "C:\php\ext" - 这是php_mysql.dll和php_mysqli.dll文件所在的目录。我该如何解决这个问题?

输出 phpinfo(): http://jsfiddle.net/MMTwA/

12 个答案:

答案 0 :(得分:15)

查看phpinfo()输出后,似乎没有加载mysql扩展。我怀疑你可能正在编辑错误的php.ini文件(可能有多个副本)。确保您正在 C:\ php \ php.ini 编辑php文件(同时检查以确保C:\ Windows中没有第二个副本)。

此外,您应该检查Apache日志中的错误(应该在Apache安装的\ logs \目录中。

如果您还没有阅读下面的内容,我会看一下评论部分,因为看起来好像有很多人在设置这个问题时会遇到怪癖。一些评论者提供了他们用来使其发挥作用的解决方案。

http://php.net/manual/en/install.windows.extensions.php

另一个常见的解决方案似乎是将libmysql.dll和php_mysql.dll从c:\ PHP复制到C:\ Windows \ System32。

答案 1 :(得分:4)

关于我(类似)问题的背景:

我被要求修复一个使用短标签的PHP项目。我的WAMP服务器的PHP.ini有short_open_tag = off。 为了首次运行项目,我将此设置修改为short_open_tag = off

问题浮出水面: 在此更改之后,我的所有mysql_connect()调用都失败了。它引发了一个错误

  

致命错误:调用未定义的函数mysql_connect。

解决方案: 只需设置short_open_tag = off即可。

答案 2 :(得分:3)

我的电脑运行的是Windows 7(Apache 2.2& PHP 5.2.17和MySQL 5.0.51a),文件名为“httpd.conf”(C:\ Program Files(x86)\ Apache Software Foundation \ Apache2.2 \ conf \ httpd.conf)对斜杠很敏感。 您可以检查是否从正确的目录中读取“php.ini”。只需输入您的浏览器“localhost / index.php”即可。 index.php的代码如下:

<?php echo phpinfo(); ?>

有一行称为“加载配置文件”(距离顶部不远)。因此,如果没有添加任何内容,那么问题可能是您的“php.ini”未被读取,即使您取消注释(extension = php_mysql.dll和extension = php_mysqli.dll)。所以,为了使它工作,我做了以下步骤。我需要改变

PHPIniDir 'c:\PHP\'

PHPIniDir 'c:\PHP'

注意最后一个斜线扰乱了一切!

现在,在刷新“localhost / index.php”(我重新启动Apache2.2之前)以及mysql块之后,“加载配置文件”行获得“C:\ PHP \ php.ini”。 MySQL和PHP正在合作!

答案 3 :(得分:2)

检查你的php.ini,我正在使用Apache2.2 + php 5.3。我有同样的问题,修改php.ini后,为了设置PHP的库目录,它工作正常。问题是默认的extension_dir配置值。

我的工作环境的默认(和错误)值是

; extension_dir="ext"

没有任何完整路径,并用分号评论。

有两种解决方案适合我。

1.-在php.ini文件中包含此行

extension_dir="X:/[PathToYourPHPDirectory]/ext

其中X:是你的驱动器字母安装(通常是C:或D:)

2.-您可以尝试简单地取消注释,删除分号。在php.ini文件中包含下一行

extension_dir="ext"

两种方式对我都很好,但选择你的。在重试之前不要忘记重启Apache。

我希望这对你有所帮助。

答案 4 :(得分:1)

嗨,我收到此错误,因为我遗漏了

中的&符号(&amp;)
; php.ini
error_reporting = E_ALL & ~E_DEPRECATED

答案 5 :(得分:1)

一定要在/ php文件夹中编辑php.ini,我整天都在检测错误,最后我发现我在错误的位置编辑了php.ini。

答案 6 :(得分:0)

有一次我使用Off代替off时出现问题。并再次检查垫片......路径必须准确。还要将以下行添加到环境变量中。

C:\your-apache-path\bin; C:\your-php-path\bin;C:\your-mysql-path\bin

如果您使用的是Windows,请右键单击我的电脑,选择属性,然后导航到高级标签...(是Windows 7)。首先单击高级系统设置,然后选择高级选项卡,然后选择环境变量。选择PATH并单击Edit。在.txt文件中复制字符串以备份(可能为空)---设置环境变量...注销并重新登录。

答案 7 :(得分:0)

更改我们的php.ini后,请确保重新启动Apache Web服务器。

答案 8 :(得分:0)

仅供将来参考,不需要将所有这些扩展文件复制到Windows / System或Windows / System32。

所需的只是您在PHP目录中编辑的php.ini文件的副本,以复制到根Windows目录。

phpinfo将清楚地解释如下: 配置文件(php.ini)路径C:\ Windows

逻辑意义将解释php想要加载位于Windows目录中的配置。 : - )

答案 9 :(得分:0)

因为mysql_connect在PHP 5.5.0中不推荐使用此扩展,并且它已在PHP 7.0.0中删除。相反,应该使用MySQLi或PDO_MySQL扩展。 默认情况下,xampp不会自动加载

在你的php.ini文件中

你应该取消注释

;; extension=php_mysql.dll

extension=php_mysql.dll

然后重启你的apache你应该没事的

答案 10 :(得分:0)

同样的问题让我疯狂(Windows 10,Apache 2.4,MySql 5.7)。由于某种原因(可能与PATH相关),.dll在php.ini中取消注释正确的exension dll和extension_dir =“ext”后才会加载。尝试了很多东西后,我只需更改“ext”即可使用完整的目录路径。例如。 extension_dir =“c:/ phpinstall / ext”并且它有效。

答案 11 :(得分:-1)

我认为您应该使用mysqli_connect而不是mysql_connect