重新启动MAMP后,我发现MySQL Server复选框并没有像往常那样变绿。我点击了“启动服务器”'再次得到一条消息说明," Apache无法启动,因为端口8888正在被其他软件使用。"很奇怪,因为我没有对系统或应用程序进行任何更改,或者安装了任何更新。我打开了Chrome并输入了我在本地开发的网站的网址,它显示没问题。但是,当我尝试使用虚拟用户帐户登录该站点时,我收到了一个" SQLSTATE [HY000] [2002]无法通过socket'连接到本地MySQL服务器。 /Applications/MAMP/tmp/mysql/mysql.sock' (2)"消息。
关于第一个问题(另一个程序正在使用的Apache端口),我打开了终端和>> 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端口错误。
无论如何,接下来我打开了Activity Monitor并杀死了正在运行并重新启动MAMP的每个httpd和mysqld进程,但问题仍然存在。我第一次杀死它后,mysqld进程再也没有出现过。
然后,我搜索了SO。我遇到了关于MAMP PRO的a post,并决定尝试建议的解决方案,但无济于事。 this post建议删除并重新安装整个应用程序也是如此。
到现在为止,我无法判断mysql错误是否导致apache错误,或者apache错误是否导致mysql错误。所以,我搜索并尝试了几个关于mysql错误的解决方案,包括来自this post和this post的建议,但它们都没有为我工作。我的意思是,我确实在这些页面上尝试了每一条建议,从发布的评论回答。
我还尝试重新启动计算机,更改apache,nginx和mysql端口配置设置,从apache切换到nginx,从终端加载MAMP的MySql,用socket创建my.cnf文件组态。其中没有一个有效。
有没有人有这方面的经验?是Apache端口错误还是MySQL套接字错误?还是完全不同的东西?考虑到没有安装更新或系统或应用程序中的任何内容发生更改,可能导致这种情况发生了什么?
提前致谢。
* **编辑2014年12月10日 ***
所以我整夜玩这个。我重新安装了几次应用程序。安装了一些更新,甚至将我的笔记本电脑的MAMP设置复制到了我的桌面。但是,我仍然有同样的错误。然后我将MAMP的文档根改回了默认的Mac HD -> Applications -> MAMP -> htdocs
并且它有效!我之前已将其设置为/Users/userhomedirectory/Sites
。
我将此作为编辑而不是答案发布,因为问题仍然存在。将文档根目录更改回Users/myhomedirectory/Sites
会给我提供与以前相同的错误消息,因此我的解决方案更像是一种解决方法。希望这会为某人制造一个灯泡,因为我仍然无法弄清楚原因和/或解决方案的原因。
答案 0 :(得分:32)
我不知道它是否会对某人有所帮助......但这对我有用:
sudo apachectl stop
: - )
答案 1 :(得分:3)
升级到yosemite和MAMP版本3.0.7.3后,我遇到了同样的问题。尝试了很多建议并解决了问题,但没有一个能为我工作。
什么时候打我!点击"设置Web& MySQL端口为80& 3306" MAMP中的按钮,MAMP为Apache AND Nginx设置端口80。导致错误,因为两者都设置为使用相同的端口。 我只是将Nginx设置为另一个随机端口,点击" OK"按钮没有出现错误。
我重新启动了Apache和MySQL。瞧!
我所有的localhost网站都在更新之前正常工作。
幸运的是,我刚读了一篇有趣的文章,解释了如何在Apache面前设置Nginx以独立地提供静态和动态以优化性能。这引发了这个想法。
我希望它有所帮助!
答案 2 :(得分:2)
转到MAMP配置并将端口地址8888
更改为任何其他地址
MAMP->Preferences->Ports->Apache Port
我认为它会正常工作
答案 3 :(得分:1)
与Nathan Rutman一样,这对我来说是一个权限问题。我得到了上面显示的相同错误 -
Apache couldn't be started because port 8888 is in use by some other software.
...并且MySQL服务器没有启动。
我没有运气更改端口或将目录移动到htaccess。
什么有效:
我前往Applications
,选择了MAMP
,并提出了Finder的Get Info
对话。我为当前用户和管理员添加了Read & Write
权限,点击了设备,然后点击了Apply to enclosed items...
我为MAMP Pro做了同样的事情,只是为了确保我的基地被覆盖。
启动MAMP,将端口更改为默认值,然后繁荣!一切正常,包括MySQL服务器 - 无需终端命令。
当我将目录更改回/Users/myuser/Sites/
文件夹时,这仍然成功。
答案 4 :(得分:0)
<强>更新强>
实际上,这只是一个直接的权限问题。我再次遇到了同样的问题,只是做了一个chown -R nathan:staff <dir>
并在MAMP中重新启动了Apache。它运作良好。
原始帖子:
奇怪的是,我认为我在我的机器上解决了这个问题。在查看默认htdocs目录和我想要使用的目录的目录之后,我注意到默认目录由nrutman:admin
拥有,而我想要使用的目录由nrutman:staff
拥有(同一用户,不同组)。
通过Finder的“信息”面板(Cmd-I),我将Administrators
组的读/写权限添加到该文件夹,并删除了员工组权限。我重新启动了MAMP,一切正常!然后,通过chown
我将所有者更改回nrutman:staff
。 Finder的信息面板现在看起来和以前一样,但现在MAMP将使用该目录而不会抱怨端口。
绝对看起来像是一个MAMP错误。不确定发生了什么,但我希望能帮助那些正在努力解决问题的人。
答案 5 :(得分:0)
更改Nginx端口对我有帮助。
答案 6 :(得分:0)
如果没有运行MySQL实例,则可能是权限问题。
右键点击图标-> run as administrator
。
答案 7 :(得分:0)
我并不是以一种微不足道的方式来表达这一点,但当这件事发生在我身上时,我开始在这里尝试一些建议(权限等),但是当我刚刚重新启动计算机时,它之后才开始工作。所以,只需提醒您在尝试其他人之前尝试重启。
答案 8 :(得分:0)
尝试进入活动监视器并搜索Mysqld和Httpd,并结束它们的所有进程。然后重新启动Mamp。 这对我有用
答案 9 :(得分:0)
更改MAMP Nginx端口70等。
和
sudo lsof -nP -i4TCP:8888 | grep LISTEN
然后杀死PID
例如:如果端口:8888
sudo lsof -nP -i4TCP:8888 | grep LISTEN
---
httpd 15030 yourusername 4u IPv6 0x5fdd0f41d81c1dd3 0t0 TCP *:8888 (LISTEN)
httpd 15031 yourusername 4u IPv6 0x5fdd0f41d81c1dd3 0t0 TCP *:8888 (LISTEN)
httpd 15032 yourusername 4u IPv6 0x5fdd0f41d81c1dd3 0t0 TCP *:8888 (LISTEN)
--
sudo kill -9 15030
sudo kill -9 15031
sudo kill -9 15032