我刚刚在家用电脑上安装了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/
在看你的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。
关于我的(类似的)问题的背景:
我被要求修复一个使用短标签的PHP项目。 我的WAMP服务器的PHP.ini有short_open_tag = off
。 为了第一次运行这个项目,我把这个设置修改为了short_open_tag = off
。
问题浮出水面:在这个改变之后,我所有的mysql_connect()调用都失败了。 它抛出了一个错误
致命错误:调用未定义的函数mysql_connect。
解决方案:只需设置short_open_tag = off
。
我的电脑运行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'
注意最后的斜线扰乱了一切!
现在,“Loaded Configuration File”行在刷新“localhost / index.php”(重新启动Apache2.2之前)后会得到“C:\ PHP \ php.ini”以及mysql块。 MySQL和PHP一起工作!
您可能已经忘记重新启动apache / wamp / xamp /您使用的任何webserver,您需要这样做才能使其工作
检查你的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。
我希望这可以帮助你。
嗨,我得到这个错误,因为我省略&符号(&)
; php.ini error_reporting = E_ALL & ~E_DEPRECATED
确保你在/ php文件夹中编辑了php.ini,我整天失去了检测错误的能力,最后我发现我在错误的位置编辑了php.ini。
更改我们的php.ini之后,请确保重新启动Apache Web服务器。
仅供将来参考,将所有这些扩展文件复制到Windows / System或Windows / System32是不必要的。
所有需要的是在PHP目录中编辑的php.ini文件的副本,以复制到根目录的Windows目录。
phpinfo会清楚地说明如下:配置文件(php.ini)路径C:\ Windows
逻辑意义将解释,PHP想要加载位于Windows目录中的配置。 🙂
有一次我使用Off
而不是off
出现问题。 而且还要再次检查电极片…路径必须精确。 还要将以下行添加到您的环境变量中。
C:\your-apache-path\bin; C:\your-php-path\bin;C:\your-mysql-path\bin
如果您在Windows中,右键单击我的电脑 ,选择属性,并导航到高级选项卡…(是Windows 7)。 先点击高级系统设置,然后选择高级选项卡,然后选择环境变量 。 选择路径,然后点击编辑。 在.txt文件中备份字符串的副本(可能为空)—设置环境变量…注销并重新登录。
由于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你应该没事的
这同样的问题使我疯狂(Windows 10,Apache 2.4,MySql 5.7)。 出于某种原因(可能与PATH相关),在取消注释php.ini中正确的expression dll和extension_dir =“ext”之后,将不会加载.dll。 尝试了很多东西后,我只是改变“ext”使用完整的目录路径。 例如。 extension_dir =“c:/ phpinstall / ext”,它工作。
我认为你应该使用mysqli_connect而不是mysql_connect