我正在将网站 (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' 将让您看到它尝试打开但未能打开的文件。