将网站从 Ubuntu 服务器迁移到 Mac 服务器时出现奇怪的 mysql 问题

将网站从 Ubuntu 服务器迁移到 Mac 服务器时出现奇怪的 mysql 问题

我正在将网站 (php/mysql) 从 Ubuntu 服务器移动到 OSX 10.6 服务器。我已经设置了 apache 来运行 php 脚本,并在 mac 上设置了最新版本的 mysql。我刚刚复制了所有 php 文件并转储/导入了所有 mysql 数据库(包括 mysql 用户数据库)。

当我访问 Mac 上提供的页面时,该页面能够连接到数据库,但无法查询。具体来说,这个函数

mysql_error()

返回此错误消息

NO SUCH FILE OR DIRECTORY

奇怪的是,我能够更改 Ubuntu 服务器上 mysql 的 php 连接字符串,以便它指向 Mac 服务器,并且页面正常工作(因此看来 mysql 在 mac 上正确设置,并且肯定包含了它应该包含的所有用户和表)。

我认为这与 Mac 上的文件权限有关,我已将所有文件更改为 755,但没有任何帮助。

有什么想法吗?谢谢!

更新:我发现了这个错误,我相对确定它与 /var/log/apache2/error_log 中的这个问题有关

PHP Warning:  mysql_query(): A link to the server could not be established

答案1

“没有这样的文件或目录”看起来像是 Web 服务器错误。如果使用 mysql_error() 返回错误消息的文本,则复制所有错误消息以及错误代码:

CODE: MESSAGE

如果您不使用 mysql_error(),请在问题 mysql_query() 后添加 mysql_error() 调用。

PHP 无法连接到 MySQL。在 mysql_connect() 后添加检查:

mysql_connect(..) or die('Could not connect: ' . mysql_error());

答案2

该错误消息是从 mysql_query 调用返回的,还是您在 mysqld 日志或其他地方找到的?如果是前者,您可以在 Web 服务器进程本身(这可能很棘手)上使用“dtruss”,也可以在使用 php-cli 运行的代码的精简版上使用“dtruss”。'dtruss' 将让您看到它尝试打开但未能打开的文件。

相关内容