我一直在端口8888上使用MAMP一段时间,所以我在浏览器中访问网站,如下所示:http://localhost:8888/website
但是我刚刚安装了一个Wordpress Multisite,因此想切换到端口80以允许我正常访问网站并拥有子目录,例如http://website.co.uk
,http://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
由于
答案 0 :(得分:5)
您可以使用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共享”来禁用它。
答案 1 :(得分:1)
就我而言,在lsof
上使用grep时无法找到任何内容。
我一直在寻找几个小时来查找创建Listen指令的重叠但没有结果的内容。
所以我使用了quickfix,那就是将httpd.conf中的Listen端口更改为8000
Listen 8000
更改它,然后重新启动apache2。应该做的伎俩...