我刚在家用电脑上安装了PHP和Apache。当我尝试调用函数mysql_connect
时,我得到:
fatal error: call to undefined function mysql_connect.
我已经加载了php.ini,其中我有未注释的行extension=php_mysql.dll
和
extension=php_mysqli.dll
并将扩展目录更改为extension_dir = "C:\php\ext"
- 这是php_mysql.dll和php_mysqli.dll文件所在的目录。我该如何解决这个问题?
输出 phpinfo(): http://jsfiddle.net/MMTwA/
答案 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