2016-09-07 177 views
1

當試圖訪問本地主機上的網站時,連接被拒絕。兩天前,該設置在配置多個虛擬主機時沒有問題。我不知道可能會影響設置的任何更改。我昨天整天都在試圖解決問題,但一直在圍繞着問題進行。爲什麼apache會拒絕連接到OSX上的localhost 127.0.0.1?

OS:OSX 16年11月10日

的httpd -V返回此:

Server version: Apache/2.4.18 (Unix) 
Server built: Feb 20 2016 20:03:19 
Server's Module Magic Number: 20120211:52 
Server loaded: APR 1.4.8, APR-UTIL 1.5.2 
Compiled using: APR 1.4.8, APR-UTIL 1.5.2 
Architecture: 64-bit 
Server MPM:  prefork 
    threaded:  no 
    forked:  yes (variable process count) 
Server compiled with.... 
-D APR_HAS_SENDFILE 
-D APR_HAS_MMAP 
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) 
-D APR_USE_FLOCK_SERIALIZE 
-D APR_USE_PTHREAD_SERIALIZE 
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT 
-D APR_HAS_OTHER_CHILD 
-D AP_HAVE_RELIABLE_PIPED_LOGS 
-D DYNAMIC_MODULE_LIMIT=256 
-D HTTPD_ROOT="/usr" 
-D SUEXEC_BIN="/usr/bin/suexec" 
-D DEFAULT_PIDLOG="/private/var/run/httpd.pid" 
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status" 
-D DEFAULT_ERRORLOG="logs/error_log" 
-D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types" 
-D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf" 

的httpd.conf配置爲允許虛擬主機和沒什麼的httpd-vhosts.conf文件已更改。

LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so 
... 
# Virtual hosts 
Include /private/etc/apache2/extra/httpd-vhosts.conf 

的apachectl configtest回報:

Syntax OK 

我試着運行端口掃描127.0.0.1和http端口80不表演。這和被拒絕的連接使我認爲這是問題所在,但我不知道爲什麼。 OSX防火牆已關閉。 I've tried the solution posted here但它沒有解決它。

我的/ etc/hosts文件看起來是這樣的:

# 
# Host Database 
# 
# localhost is used to configure the loopback interface 
# when the system is booting. Do not change this entry. 
#  

127.0.0.1  localhost 
255.255.255.255 broadcasthost 
::1    localhost 
fe80::1%lo0  localhost 
127.0.0.1  site.local 
127.0.0.1  othersite.local 
... 

我可以ping 127.0.0.1。我以前曾經安裝過自制軟件來運行不同的PHP版本,但是我已經刪除了它,嘗試將系統恢復到庫存狀態。我真的不知道下一步該怎麼做,任何幫助都會非常感激。

+0

'sudo apachectl start'也許? –

+0

@MarkSetchell過去兩天我一直在不停地重新啓動apachectl,但沒有任何運氣。我知道它是在啓動時自動啓動的,我並沒有停止它。儘管如此,當我嘗試它時,我得到了'/ System/Library/LaunchDaemons/org.apache.httpd.plist:service already loaded',我認爲它意味着它已經啓動了? – Yabsley

+0

確定您的配置已配置端口80? –

回答

2

經過幾天的嘗試調試,我解決了這個問題,通過用升級到osx elcapitan時創建的舊版本覆蓋我的httpd.conf文件來解決它。

sudo cp httpd.conf~elcapitan httpd.conf 

做完這個localhost後,可以再次訪問。我不知道我以前的httpd.conf文件有什麼問題。我曾多次尋找問題並且從未找到任何問題。我甚至對這兩個文件進行了分析,試圖找出問題出在哪裏,沒有發現它會以這種方式失敗的原因。

一旦我有本地主機再次響應,我經歷了啓用我需要的模塊和重新配置我的虛擬主機的過程。

同樣,我不知道其他httpd.conf文件出了什麼問題。也許它以某種方式損壞了。無論如何,apachectl configtest都不會報告任何問題。

所以如果別人有類似的問題,它可能值得回到一箇舊的httpd.conf文件。 OSX通常在升級完成後創建備份。

1

您可以檢查並確保您的/usr/local/etc/apache2/2.4/httpd.conf配置文件中有Listen: 80

2

升級php時發生在我身上。下面的步驟爲我帶來了回到正軌。

通常,mac在升級之前創建備份。因此,我們將使用httpd的更新前版本。conf

cd /etc/apache2/ 
sudo mv httpd.conf httpd.conf-afterupdate 
sudo mv httpd.conf.pre-update httpd.conf 
sudo apachectl configtest 
sudo apachectl restart 
相關問題