【问题标题】:Getting ERR_CONNECTION_REFUSED获取 ERR_CONNECTION_REFUSED
【发布时间】:2019-07-15 20:29:56
【问题描述】:

我已尽一切努力让我的 localhost 为我的 php 服务器运行。没有任何效果。我已经看到 Apache 正在运行,并且它正在运行到正确的端口。

我真的很想在这里得到一些帮助!我提供尽可能多的信息。问题是我在某个时候让它工作,然后我升级到 MOJAVE,然后一切都失败了。

我的问题是当我想打开我的 index.php 时 http://localhost/index.php我明白了

ERR_CONNECTION_REFUSED

我在我的 Apache 日志文件中找到了这个:

AH00526:/private/etc/apache2/httpd.conf 的第 245 行语法错误: DocumentRoot '/Users/pontus/Sites' 不是目录,或者不是 可读

这里有更多信息

#Listen 12.34.56.78:80
<IfDefine SERVER_APP_HAS_DEFAULT_PORTS>
    Listen 8080
</IfDefine>

#LoadModule session_cookie_module libexec/apache2/mod_session_cookie.so
#LoadModule session_dbd_module libexec/apache2/mod_session_dbd.so
LoadModule slotmem_shm_module libexec/apache2/mod_slotmem_shm.so
#LoadModule slotmem_plain_module libexec/apache2/mod_slotmem_plain.so
#LoadModule ssl_module libexec/apache2/mod_ssl.so
#LoadModule dialup_module libexec/apache2/mod_dialup.so
#LoadModule http2_module libexec/apache2/mod_http2.so
#LoadModule lbmethod_byrequests_module libexec/apache2/mod_lbmethod_byrequests.so
#LoadModule lbmethod_bytraffic_module libexec/apache2/mod_lbmethod_bytraffic.so
#LoadModule lbmethod_bybusyness_module libexec/apache2/mod_lbmethod_bybusyness.so
##LoadModule lbmethod_heartbeat_module libexec/apache2/mod_lbmethod_heartbeat.so
LoadModule unixd_module libexec/apache2/mod_unixd.so
#LoadModule heartbeat_module libexec/apache2/mod_heartbeat.so
#LoadModule heartmonitor_module libexec/apache2/mod_heartmonitor.so
#LoadModule dav_module libexec/apache2/mod_dav.so
LoadModule status_module libexec/apache2/mod_status.so
LoadModule autoindex_module libexec/apache2/mod_autoindex.so
#LoadModule asis_module libexec/apache2/mod_asis.so
#LoadModule info_module libexec/apache2/mod_info.so
#LoadModule cgi_module libexec/apache2/mod_cgi.so
#LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so
#LoadModule dav_lock_module libexec/apache2/mod_dav_lock.so
#LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
LoadModule negotiation_module libexec/apache2/mod_negotiation.so
LoadModule dir_module libexec/apache2/mod_dir.so
#LoadModule imagemap_module libexec/apache2/mod_imagemap.so
#LoadModule actions_module libexec/apache2/mod_actions.so
#LoadModule speling_module libexec/apache2/mod_speling.so
#LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule alias_module libexec/apache2/mod_alias.so
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule php7_module libexec/apache2/libphp7.so
#LoadModule perl_module libexec/apache2/mod_perl.so
LoadModule hfs_apple_module libexec/apache2/mod_hfs_apple.so

<Directory />
    AllowOverride none
    Require all denied
</Directory>

DocumentRoot "/Users/pontus/Sites"
<Directory "/Users/pontus/Sites">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options FollowSymLinks Multiviews
    MultiviewsMatch Any

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #

【问题讨论】:

  • 不清楚你的问题是什么。你从哪里得到这个消息?在某个日志上,或者当您请求它时?据我所知,首先您的 conf 缺少 ServerName 指令以及它正在侦听的端口,仅举几例。
  • 当我试图在 webbrowser 中打开文件时,我如何检查它正在监听的端口?当您说我的 conf 缺少 ServerName @Marco 时,您是什么意思
  • 当你输入somedomain.com时,它与somedomain.com:80相同,所以默认端口是80。对于https,默认端口是443。
  • 您发布的 Apache 错误几乎说明了一切。鉴于该错误,我严重怀疑 Apache 是否真的在端口 80 上运行和侦听。
  • /System/Library/LaunchDaemons/org.apache.httpd.plist:服务已经加载。这意味着它正在运行吗?

标签: php macos terminal


【解决方案1】:

你说你使用 Apache,兄弟,如果你不明白我的意思,你真的需要停下来,先学习如何配置 apache。典型的 apache conf 如下所示:

<VirtualHost *:80>
ServerName domain.tld
ServerAlias www.domain.tld

DocumentRoot /var/www/project/public
<Directory /var/www/project/public>
    AllowOverride All
    Order Allow,Deny
    Allow from All
</Directory>

# uncomment the following lines if you install assets as symlinks
# or run into problems when compiling LESS/Sass/CoffeeScript assets
# <Directory /var/www/project>
#     Options FollowSymlinks
# </Directory>

ErrorLog /var/log/apache2/project_error.log
CustomLog /var/log/apache2/project_access.log combined

【讨论】:

  • 老兄!我只是想找出问题所在。我能够找到这个错误 AH00526:/private/etc/apache2/httpd.conf 的第 245 行的语法错误:DocumentRoot '/Users/pontus/Sites' 不是目录,或者不可读
【解决方案2】:

首先,潜在的端口问题。

看来您需要将此添加到监听部分:

 <IfDefine !SERVER_APP_HAS_DEFAULT_PORTS>
     Listen 80
    </IfDefine>

如果 Server.app 正在运行,您粘贴的内容会显示备用端口。

然后在终端重启Apache:

sudo /usr/sbin/apachectl 重启

二、目录问题:

如果您使用的是 Mojave 附带的 Apache 服务器,请使用 Finder Go->Go to Folder 或终端中的 ls -l 查看默认的 Webserver 目录是否存在:

/Library/WebServer/Documents

如果是,将目录更改为 /etc/apache2/http.conf 中的默认位置:

DocumentRoot "/Library/WebServer/Documents"   
<Directory "/Library/WebServer/Documents">

然后在终端重启Apache:

sudo /usr/sbin/apachectl 重启

现在在浏览器中访问 localhost,如果一切正常,它会显示“It works!” (假设原来的 index.html 在那里)。如果发生这种情况,请将您的 php 脚本移动到 /Library/WebServer/Documements 并确保权限正确。为此,您需要熟悉“ls -l”、“chmod”、“chown”和“chgrp”。

【讨论】:

  • 我试过了,但现在我得到了 Forbidden You don't have permission to access to /index.php on this server.
  • 听起来我们越来越近了。我已经稍微修改了我的答案,希望能包含您需要的附加信息。
猜你喜欢
  • 1970-01-01
  • 2017-01-30
  • 1970-01-01
  • 1970-01-01
  • 2015-04-17
  • 1970-01-01
  • 2017-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多