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.net 构建中。您可以通过在命令 shell 中调用在 PHP 5.3 之后的官方发行版中,默认启用 MySQL Native Driver
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的主要内容,如果未能解决你的问题,请参考以下文章