【问题标题】:No error messages returned when mysql_connect does not work for PHP on IIS当 mysql_connect 不适用于 IIS 上的 PHP 时,不返回错误消息
【发布时间】:2012-03-07 15:20:27
【问题描述】:

我是 PHP 和 MySQL 的新手,最近在已经运行 IIS v6 的 Windows Server 2003 服务器上安装了 PHP v5.3.10 和 MySQL v 5.5.21。

PHP 运行,我从 MySQL 5.5 命令行客户端在 MySQL 上创建了一个数据库。 但是,当我尝试使用以下命令从 PHP 访问数据库时:

echo "Open database";
$link = mysql_connect($host, $username, $password);
echo " link: $link";
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db($db_name, $link)or die("cannot select DB");

echo " database open";

我得到以下返回到网页:

Open database

在 mysql_connect 命令从 PHP 到屏幕上。

还尝试了下面的行,也没有返回任何错误消息:

mysql_connect($host, $username, $password) or die('Cannot connect:' . mysql_error());

有人知道为什么我无法建立连接并且无法从 mysql_connect 命令返回错误消息吗?

我检查了 MySQL 并尝试将主机定义为 %、localhost、本地主机 IP 和 IP:端口号(来自 my.ini 中列出的端口号 3306)无效。 我只在 mySQL 中创建了一个用户名“root”,并使用了一个密码(我在打开 MySQL 创建数据库时使用了该密码)

我已将“php.ini”放在“C:\Program Files\PHP”和“C:\WINDOWS”中。
该文件包含 'extension_dir = "C:\Program Files\PHP\ext"' 来指定扩展目录,并在文件末尾包含以下内容:

[PHP_PDO_MYSQL]

extension=php_pdo_mysql.dll

[PHP_MYSQL]

extension=php_mysql.dll

[PHP_MYSQLI]

extension=php_mysqli.dll

我还尝试运行 phpinfo(),它为 mysqlnd 返回了下表:

mysqlnd                enabled 
Version                mysqlnd 5.0.8-dev - 20102224 - $Revision: 321634 $  
Compression            supported  
SSL                    supported  
Command buffer         size  4096  
Read buffer            size  32768  
Read timeout           31536000  
Collecting statistics  Yes  
Collecting memory statistics  No  
Tracing                       n/a  

所以我假设 php 应该能够连接。

【问题讨论】:

  • 错误信息是否开启?
  • 您会在未定义的函数上遇到致命的 php 错误,例如 mysql_connect 不存在。如果底层模块一开始就没有加载,这些函数根本就不存在。
  • 从未定义的函数 mysql_connect() 错误消息看来,您是对的。如果 php.ini 文件没有加载模块,我该如何加载它们?
  • 这似乎是另一个问题的话题。

标签: php mysql iis-6


【解决方案1】:

试试这个:

ini_set('display_errors',1);
error_reporting(E_ALL);

【讨论】:

    【解决方案2】:

    镜像@Jrod:

    • error_reporting 是否开启?
    • 您检查过实例的 error_log 吗?

    听起来有些事情失败了,而且您的错误报告设置得不够高,无法显示出来。您可以尝试将此添加到脚本的顶部:

    error_reporting(E_ALL);
    

    【讨论】:

    • 在 php 的顶部插入这一行导致网页根本不显示。它需要 ini_set 命令来显示错误
    猜你喜欢
    • 1970-01-01
    • 2016-07-19
    • 2019-09-19
    • 2019-04-13
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    相关资源
    最近更新 更多