php - MAMP "Apache couldn' 无法启动,因为端口正在使用 ."AND "无法通过/tmp/mysql.sock 连接到本地 MySQL 服务器

标签 php mysql apache sockets tcp

重新启动 MAMP 后,我注意到 MySQL 服务器复选框并没有像往常一样变成绿色。我再次单击“启动服务器”并收到一条消息,指出“Apache 无法启动,因为端口 8888 正在被其他软件使用。”奇怪,因为我没有对系统或应用程序进行任何更改,也没有安装任何更新。我打开 Chrome 并输入我在本地开发的网站的 url,它显示没有问题。但是,当我尝试使用虚拟用户帐户登录该站点时,我收到“SQLSTATE[HY000] [2002] 无法通过套接字'/Applications/MAMP/tmp/mysql/mysql.sock'连接到本地 MySQL 服务器” (2)”消息。

关于第一个问题(Apache Port 被另一个程序使用),我打开终端和>> sudo lsof -i -P | grep -i "listen"查看哪些端口会出现。当 MAMP 关闭时,控制台输出是
launchd 1 root 23u IPv6 0x156733646a84db9h 0t0 TCP *:5900 (LISTEN) launchd 1 root 24u IPv4 0x156733646a84eba8 0t0 TCP *:5900 (LISTEN) launchd 1 root 28u IPv6 0x156733646a84d75u 0t0 TCP localhost:631 (LISTEN) launchd 1 root 29u IPv4 0x156733646a84e3bu 0t0 TCP localhost:631 (LISTEN) launchd 1 root 31u IPv6 0x156733646a84d31u 0t0 TCP *:22 (LISTEN) launchd 1 root 32u IPv4 0x156733646a857ba5 0t0 TCP *:22 (LISTEN) kdc 96 root 6u IPv6 0x156733646a84cedt 0t0 TCP *:88 (LISTEN) kdc 96 root 8u IPv4 0x156733646c2a9ba5 0t0 TCP *:88 (LISTEN) imagent 270 userhomedirectory 7u IPv4 0x156733646a1a13bb 0t0 TCP *:52216 (LISTEN) EEventMan 279 userhomedirectory 4u IPv4 0x156733646a8573bb 0t0 TCP *:2968 (LISTEN) MAMP 运行时的输出是(上面列出的所有内容)+:
httpd 28772 userhomedirectory 5u IPv6 0x156733646a84b55f 0t0 TCP *:8888 (LISTEN) httpd 28786 userhomedirectory 5u IPv6 0x156733646a84b55f 0t0 TCP *:8888 (LISTEN) httpd 28790 userhomedirectory 5u IPv6 0x156733646a84b55f 0t0 TCP *:8888 (LISTEN) httpd 28791 userhomedirectory 5u IPv6 0x156733646a84b55f 0t0 TCP *:8888 (LISTEN) httpd 28792 userhomedirectory 5u IPv6 0x156733646a84b55f 0t0 TCP *:8888 (LISTEN) httpd 28793 userhomedirectory 5u IPv6 0x156733646a84b55f 0t0 TCP *:8888 (LISTEN) httpd 28794 userhomedirectory 5u IPv6 0x169041156a84b55f 0t0 TCP *:8888 (LISTEN)
因此,端口 8888 仅在 MAMP 启动时使用,这也告诉我 Web 服务器实际上已连接。所以我不明白为什么我会收到 Apache 端口错误。

无论如何,接下来我打开事件监视器并杀死正在运行的每个 httpd 和 mysqld 进程并重新启动 MAMP,但问题仍然存在。 mysqld 进程在我第一次杀死它后就再也没有出现过。

然后,我搜索了SO。我遇到了a post关于 MAMP PRO 并决定尝试建议的解决方案,但无济于事。 this post 也是如此的建议删除并重新安装整个应用程序。

现在我无法判断是 mysql 错误导致了 apache 错误还是 apache 错误导致了 mysql 错误。因此,我搜索并尝试了几种有关 mysql 错误的解决方案,包括来自 this post 的建议。 , 和 this post ,但他们都没有为我工作。我的意思是,我真的尝试了这些页面上的每一个建议,从发布的答案到评论。

我还尝试重新启动计算机,更改 apache、nginx 和 mysql 端口配置设置,从 apache 切换到 nginx,从终端加载 MAMP 的 MySql,使用套接字配置创建 my.cnf 文件。这些都没有奏效。

有人对这个有经验么?是 Apache 端口错误还是 MySQL 套接字错误?或者完全不同的东西?考虑到系统或应用程序中没有安装更新或更改任何内容,这可能是什么原因造成的?

提前致谢。

* **编辑 2014 年 12 月 10 日 ***
所以我整晚都在玩这个。我重新安装了应用程序几次。安装了一些更新,甚至将我的笔记本电脑的 MAMP 设置复制到我的桌面上。但是,我仍然遇到相同的错误。然后我将 MAMP 的文档根目录改回默认 Mac HD -> Applications -> MAMP -> htdocs它奏效了!我之前将它设置为 /Users/userhomedirectory/Sites .

我将此作为编辑而不是答案发布,因为问题仍然存在。将文档根目录改回 Users/myhomedirectory/Sites给了我与以前相同的错误消息,所以我的解决方案更像是一种解决方法。希望这为某人点亮了灯泡,因为我仍然无法弄清楚可能是什么原因和/或解决方案。

最佳答案

我不知道它是否会帮助某人......但这对我有用:
sudo apachectl stop :-)

来自 https://stackoverflow.com/a/24287496/1420009

关于php - MAMP "Apache couldn' 无法启动,因为端口正在使用 ."AND "无法通过/tmp/mysql.sock 连接到本地 MySQL 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27387922/

相关文章:

php - 将数据库翻译成不同的语言

mysql - 将充满重复条目的列设置为 PRIMARY AUTO_INCRMENT?

apache - 在 Apache 下的 FastCGI 中使用 Catalyst 进行调度

java - Wicket 口 : org. apache.wicket.markup.MarkupNotFoundException

php - zendfox 安装过程中出错,SQLSTATE[HY000] : General error: 1005 (errno: 150)

php - 密码验证不适用于密码哈希 BCRYPT

php - 重写 URL 是否有助于搜索引擎找到该页面?

MySQL 选择不同于表?

PHP 字符集和校对问题

php - apache2.conf 的权限被拒绝(ubuntu,这里是新的 linux 用户)