php 5.3.1 的 phpinfo() 中未启用 mysql

Posted

技术标签:

【中文标题】php 5.3.1 的 phpinfo() 中未启用 mysql【英文标题】:mysql is not enabled in phpinfo() of php 5.3.1 【发布时间】:2011-01-12 23:29:53 【问题描述】:

我在 vista 上安装了 apache 2.2.14、php 5.3.1 和 mysql 5.1.43。我从 2 天以来一直在尝试配置 php 以在 phpinfo() 上启用 mysql。

    我将 php.ini 修改为 extension_dir = "c:\php\ext" 修改扩展为extension="php_mysql.dll" 将“c:\php”添加到“PATH”环境变量并重新启动 vista。

在尝试将 php.ini、php_mysql.dll 和 libmysql.dll 放入 c 驱动器和/或 c:/windows 和/或 c:/windows/system32 的多种组合之后,现在我别无选择!!

每次修改后我都会重新启动 apache。我使用了 mysql 安装中存在的 libmysql.dll 和旧 php 版本的 libmysql.dll,因为 php 5.3.1 没有 libmysql.dll ...

任何帮助将不胜感激。 提前致谢。

【问题讨论】:

【参考方案1】:

您必须编辑 php.ini 并添加/取消注释一行以导入 php_mysql.dll 扩展名。搜索 ;extention=php_mysql.dll 并删除 ;。如果你发现这条线前面没有;,你还有另一个问题。如果您没有找到此行,请在不带 ; 的情况下添加它。

你也可以尝试在扩展路径后加一个\extension_dir="c:\php\ext\"

【讨论】:

嗨渡渡鸟...,谢谢你的时间。我已经按照您的建议进行了两项更改,但对 phpinfo() 仍然没有影响。如果 php.ini 和 libmysql.dll 文件分别不同于 c:/php 和 c:/windows/system32,你能告诉我正确的位置吗?我没有看到任何其他需要处理的问题【参考方案2】:

将 php_mysql.dll 放在 "c:\php\ext" 目录中(并保持extension="php_mysql.dll" 未注释[没有前导;])

【讨论】:

嗨丹,谢谢你的建议,但我同意提到的变化。应该有任何其他更改吗?【参考方案3】:

确保您编辑了正确的 php.ini。如有疑问

<?php echo 'ini= "', get_cfg_var('cfg_file_path'), '"';

会告诉你你的 php 安装使用了哪一个。

可能 php 尝试加载 php-mysql 扩展,但由于其他依赖项而失败。这将导致error.log 中出现启动错误条目。

您使用哪个 php-build? php-mysql 扩展可以使用 libmysql.dll 作为传输层或新的mysqlnd (MySQL native driver) 模块。您已将 c:\php 添加到 PATH。通常这样做是为了让 Windows 找到 libmysql.dll(虽然这不是必需的,但我更喜欢其他方法)。如果 php-mysql 依赖于 libmysql.dll 而 windows 找不到它,加载 php_mysql.dll 会失败。 但是,如果您使用的是 php 5.3.1 的 php.net 构建,则 mysql 模块使用 mysqlnd:

在 Windows 上安装

在 PHP 5.3 之后的官方发行版中,默认启用 MySQL Native Driver

该模块内置在 php.net 构建中。您可以通过在命令 shell 中调用 php -m 来测试它。它打印所有内置模块。

【讨论】:

您好 VolkerK,感谢您提出宝贵意见。在运行代码 请尝试“增强”信息脚本(将 ini="..." 添加到输出以确保始终打印“某物”,空白页也可能意味着“解析错误”,因此最好总是打印“某物”)。如果它仍然为 cfg_file_path 打印一个空值,那么这个 php 实例根本没有使用/找到任何 php.ini。请参阅docs.php.net/configuration.file(附加依赖项本来是 libmysql.dll,但由于您使用的是 mysqlnd,因此这不适用) 感谢 VolkerK 向我展示了解决问题的正确方法:) 正确执行代码后,我看到空路径为 ini="" 。问题出在文件名上!我用正确的文件名更正了我的“php.ini”文件(最初是 php.ini.ini);)现在我的 phpinfo() 也显示了 mysql。 (现在不再出现致命错误:调用未定义函数 mysql_connect())谢谢 :)【参考方案4】:

2013 年 4 月 7 日更新。在 i7 Quad、HT 8、3.62GHz、12GBRAM 上安装了 Windows 8。安装了最新版本的 MySQL,使其正常运行。安装了最新版本的 Apache Web Server,让它正常运行。安装了最新版本的PHP,让它正常运行。 MySQL 无法连接到数据库。错误消息是“mysql_connect 函数未定义”。我将修改后的 php.ini 文件复制到“C:\Program Files (x86)\Apache Software Foundation\Apache2.2\bin”,然后重新启动 Apache Web 服务器......然后一切都神奇地开始工作了。!!!我希望这有助于有人设置自己的 Windows MySQL / PHP Web 服务器。

【讨论】:

【参考方案5】:

非常感谢用户说我们必须将文件php.ini 移动到Apache 服务器的文件夹/bin。在尝试了一个多星期的失败方法后,它解决了我同样的问题。

当然我们必须取消文件中这两行的注释;

;extension=php_mysql.dll
;extensin_dir="ext"

通过删除分号 (;) 并指定扩展库 php_mysql.dll 而不是 ext 的完整路径,如下所示

extension=php_mysql.dll
extensin_dir="c:\Apache22\php53\ext"

对于我来说,我将 Apache 安装在文件夹 c:\Apache22 中,并将 PHP 安装在文件夹 c:\Apache22\php53 中,您必须使用自己的值。

注意:因为像mysql_connect()这样的mysql_函数在PHP 5.5及更高版本中已被弃用,建议也启用库php_mysqli.dll以使用像mysqli_这样的函数(改进版mysql_ 函数)。要做到这一点很简单,您只需取消注释该行:

;extension=php_mysqli.dll

在PHP.ini文件中如下:

extension=php_mysqli.dll

【讨论】:

以上是关于php 5.3.1 的 phpinfo() 中未启用 mysql的主要内容,如果未能解决你的问题,请参考以下文章

php文件包含漏洞(利用phpinfo)复现

如何使用 phpinfo() 显示 PHP 信息?

phpinfo() 不工作它显示空白页但其他 php 工作

php memcache 扩展 php -m 与 phpinfo() 不同

phpinfo在哪个文件夹里能找到啊?

如何进入显示PHP具体配置信息的phpinfo页面