我已经在8888端口使用mamp一段时间了,所以我在浏览器中访问网站,就像这样:http://localhost:8888/website
不过,我刚刚安装了一个WordPress多站点,因此想切换到端口80以允许我正常访问网站,并有子目录,例如http://website.co.ukhttp://subdomain.website.co.uk
我已经在mamp中设置了vhosts文件,并在mamp首选项中将端口更改为80,但是自从这样做之后,mamp将不会启动apache。mysql可以正常启动,但是apache无法启动。
我试图通过在终端中运行以下命令手动启动apache:
sudo ./startApache.sh
但每次我这样做我都会得到以下错误:

(48)Address already in use: make_sock: could not bind to address [::]:80
(48)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

如果我切换回8888端口,MAMP会再次工作。有人能给我指个正确的方向吗?
sudo lsof | grep LISTEN

launchd      1           root   11u     IPv6  0x8754c7c05566afd       0t0      TCP *:afpovertcp (LISTEN)
launchd      1           root   12u     IPv4  0x8754c7c0556bae5       0t0      TCP *:afpovertcp (LISTEN)
launchd      1           root   30u     IPv6  0x8754c7c0556671d       0t0      TCP localhost:ipp (LISTEN)
launchd      1           root   31u     IPv4  0x8754c7c0556b3ad       0t0      TCP localhost:ipp (LISTEN)
httpd       21           root    4u     IPv6  0x8754c7c0556633d       0t0      TCP *:http (LISTEN)
kdc         43           root    6u     IPv6  0x8754c7c05565f5d       0t0      TCP *:kerberos (LISTEN)
kdc         43           root    8u     IPv4  0x8754c7c0556a53d       0t0      TCP *:kerberos (LISTEN)
httpd      191           _www    4u     IPv6  0x8754c7c0556633d       0t0      TCP *:http (LISTEN)
Dropbox    293            Ell   19u     IPv4  0x8754c7c0a8db6cd       0t0      TCP *:17500 (LISTEN)
Dropbox    293            Ell   25u     IPv4  0x8754c7c0a8da125       0t0      TCP localhost:26164 (LISTEN)
mysqld     454            Ell   10u     IPv4  0x8754c7c0ba8085d       0t0      TCP *:ddi-tcp-2 (LISTEN)

更新:
ps 21
PID   TT  STAT      TIME COMMAND
21   ??  Ss     0:00.39 /usr/sbin/httpd -D FOREGROUND

谢谢

最佳答案

您可以使用lsof检查哪些进程正在监听哪些端口:

sudo lsof | grep LISTEN

查找监听*:http等的进程。
更新:
您可以看到一个进程已经在使用*:http,这是一个名为httpd的进程,其pid为21。httpd很可能是一个apache进程。所以我猜您的系统已经在某个地方安装了apache(可能是自动启动的),或者mamp apache已经在运行了。
尝试运行ps 21以获取有关进程的更多信息。在我安装了mamp并运行的系统上,我看到了这个:(65696是系统上httpd的pid)。
mattias@waderbook:~$ ps 65696
  PID   TT  STAT      TIME COMMAND
65696   ??  Ss     0:00.57 /Applications/MAMP/Library/bin/httpd -k start

如果您看到/usr/sbin/httpd它很可能是与os x捆绑在一起运行的apache。尝试通过转到首选项中的“共享”和禁用“Web共享”来禁用它。

08-25 12:14
查看更多