【发布时间】:2012-01-21 23:52:19
【问题描述】:
我一直在与其他人共享的测试服务器下开发一个站点。完成所有操作后,我在 NearlyFreeSpeech.net 上托管并切换了名称服务器。我必须更改所有 URL,因为我在测试服务器上有一个特定的文件夹。这一切都是手动完成的,而不是搜索和替换,所以我相当确定一切都是正确的。
但是,我遇到了一系列问题,而且它们似乎都相关。起初,由于权限问题,我无法访问某些文件。我得到了一种 MySQL“权限被拒绝”的错误。我还参考了许多检查某些条件的 PHP 文件(所需的用户名免费、密码是否正确等),出于某种原因,即使代码相同,其中许多文件总是返回相同的“真”假就像我在测试服务器上一样。关闭这些 JS 验证后,我一直在尝试登录/注册,其中许多在服务器端验证中返回了无根据的错误,所以肯定出了问题。
我最终只是在这一切之间的某个时间将每个文件设置为 CHMOD 777,它消除了一些错误。但是,我仍然遇到这些验证错误,并且当它偶尔让我登录时,它不会启动会话。
有什么建议吗?
编辑:
以具体案例为例:
$query = "SELECT * FROM registerusers WHERE username='$username'";
$res = mysql_query($query);
if (mysql_num_rows($res) == 1) {
$output = false;
} else {
$output = true;
}
echo json_encode($output);
这总是返回 1 行。在我的原始脚本中,我使用了if (mysql_num_rows > 0),它运行良好。但是,在这里,该代码不起作用。通过将其更改为==,我可以确定它始终返回 1 并执行该子句。如果用户名存在或不存在,则返回 1。我完全被难住了,真的不明白我怎么会因为改变主机而出现这样的错误。
【问题讨论】:
-
您是如何传输文件的?我记得当我通过脚本使用 ftp_put 传输文件并且类型为 FTP_ASCII 而不是 FTP_BINARY 时遇到了一些权限问题(尽管在图像上)。
-
MySQL 'permission denied' 更有可能是由于数据库凭据错误 - 首先检查这些凭据。如果您的会话有问题,您可能在开始会话之前向浏览器输出了一些内容。您可能需要先在您的开发机器上调试此问题。
-
这个问题真的很模糊,但是如果你有与权限相关的Mysql错误,你可能还想检查存储过程/函数/触发器体。当你创建sp时,它会添加
definer=[username](即使你没有明确指定),并且旧系统的mysql用户可能不存在新的......我过去在迁移过程中遇到过这样的问题。 -
另外,使用error_reporting 暂时打开所有错误和警告,以查看您在新服务器上的 php 配置是否导致问题。最后,看看你是否可以在共享服务器上获得权限 644 - 你不想让“世界”访问任何东西。
-
@halfer,如果我只是复制我在测试服务器上拥有的所有权限,那行得通吗?
标签: php mysql validation permissions chmod