gpt4 book ai didi

php - 为什么这在我的开发服务器上有效,但在实时服务器上无效?

转载 作者:太空宇宙 更新时间:2023-11-03 12:22:05 25 4
gpt4 key购买 nike

我有一个正在处理的站点,该站点的所有内容都在一个 mysql 数据库中。我最近添加了访问者注册以访问受限内容的功能。这包括注册、更改密码和找回丢失的密码等。因为访问者需要选择、插入和更新权限,我担心将这些权限授予整个站点数据库的未知访问者,所以我选择用于外部用户的单独数据库。

一切正常,注册、激活、更改密码和找回密码。现在的问题是,我正尝试从同一管理区域内访问 ext_users 数据库以获取一般站点内容,但它仅适用于我的开发服务器(MAMP Pro 2.1.1、Apache 2.2.22、mysql 5.5.25、 php 5.4.4) 不在我的实时服务器上 (centos 5.9 i686 virtuozzo – vps, Apache 2.2.21, mysql 5.0.96, php 5.?) 这是我所做的。

我创建了两个连接脚本,每个都有自己的变量,并在 admin.php 中为每个脚本执行了一个 require_once()。第一个是通用站点数据库:

    $hostname_siteadmin = "localhost";
$database_siteadmin = "generalsiteDB";
$username_siteadmin = "generalsiteUSER";
$password_siteadmin = "generalsitePWD";
$siteadmin = mysql_pconnect($hostname_siteadmin, $username_siteadmin, $password_siteadmin) or trigger_error(mysql_error(),E_USER_ERROR);

第二个是外部用户数据库:

    $hostname_vusradmin = "localhost";
$database_vusradmin = "extusersiteDB";
$username_vusradmin = "extusersiteUSER";
$password_vusradmin = "extusersitePWD";
$vusradmin = mysql_pconnect($hostname_vusradmin, $username_vusradmin, $password_vusradmin) or trigger_error(mysql_error(),E_USER_ERROR);

正如我所说,在我的测试服务器上这没有问题,但在生产服务器上只有最后加载 的连接脚本有效。这似乎表明存在变量冲突,但同样,每个连接脚本的变量都不同,如上所示。我的错误处理脚本在尝试查看注册用户时返回此错误:

mysql_num_rows(): supplied argument is not a valid MySQL result resource

它指向第 33 行,这是此 mysql 查询的最后一行:

mysql_select_db($database_vusradmin, $vusradmin);
$query = "SELECT user_id FROM ext_users";
$result = mysql_query($query);
$totalrecords = mysql_num_rows($result);

当我查看错误处理脚本的输出时,我看到两个不同的连接变量,每个变量都分配了一个资源 ID。我还看到了每个连接的用户名和密码,它们都是正确的。第 33 行的错误似乎表明查询没有产生任何结果,错误消息内容证实了这一点:

[query] => SELECT user_id FROM ext_users
[result] =>

结果为空。

总而言之,这在我的开发服务器上运行良好,但在我的生产服务器上运行不佳。错误报告显示正在建立的两个连接,每个连接都有正确的用户名和密码。已为每个连接分配了一个单独的资源 ID,但与 ext_users 的第一个数据库交互(选择查询)失败了。我已经检查、双重检查和三次检查连接脚本的值与实时服务器上的值,它们都是正确的。我有一个数据库用户 vuseradm,在实时服务器上具有选择、插入、更新和删除权限。这会是什么?是否有可能影响此的服务器设置?

我们非常欢迎任何有用的建议。

已解决

我重新创建了连接脚本以及 mysql_select_db 和查询,现在它工作得很好。我仍然看不出原始版本和新版本之间的区别在哪里,但是,嘿,谁在乎呢,它现在工作正常。

很抱歉用这件琐碎但令人沮丧的事情来打扰大家。非常感谢所有回复的人。

最佳答案

如果 $result 不是有效的结果资源,则找出它无效的原因:

$result = mysql_query($query) or die(mysql_error());
^^^^^^^^^^^^^^^^^^^^^^

var_dump($result) 可能会显示它是一个 bool 值 FALSE,表示失败。

关于php - 为什么这在我的开发服务器上有效,但在实时服务器上无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19453454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com