【问题标题】:Apache not working after macOS Mojave updatemacOS Mojave 更新后 Apache 无法工作
【发布时间】:2019-03-07 15:26:59
【问题描述】:

好的,在将 macOS 从 High Sierra 更新到 Mojave 后,使用 PHP 的 Apache 停止正常工作,所以我按照本指南中的说明进行了所有操作 - https://getgrav.org/blog/macos-mojave-apache-multiple-php-versions

但在那之后,apache 仍然无法正常工作,有时工作,有时不工作,并且在浏览器中显示 ERR_CONNECTION_REFUSED 或其他错误,如 404 或 500。

在 apache 日志中是:

[Tue Oct 02 15:02:23.209423 2018] [mpm_prefork:notice] [pid 14579] AH00173: SIGHUP received.  Attempting to restart
[Tue Oct 02 15:02:23.255957 2018] [mpm_prefork:notice] [pid 14579] AH00163: Apache/2.4.35 (Unix) PHP/7.2.10 configured -- resuming normal operations
[Tue Oct 02 15:02:23.256008 2018] [core:notice] [pid 14579] AH00094: Command line: '/usr/local/opt/httpd/bin/httpd'
[Tue Oct 02 15:14:37.626645 2018] [mpm_prefork:notice] [pid 14579] AH00173: SIGHUP received.  Attempting to restart
[Tue Oct 02 15:14:37.674603 2018] [mpm_prefork:notice] [pid 14579] AH00163: Apache/2.4.35 (Unix) PHP/7.2.10 configured -- resuming normal operations
[Tue Oct 02 15:14:37.674672 2018] [core:notice] [pid 14579] AH00094: Command line: '/usr/local/opt/httpd/bin/httpd'
[Tue Oct 02 15:28:40.715060 2018] [mpm_prefork:notice] [pid 14579] AH00173: SIGHUP received.  Attempting to restart
[Tue Oct 02 15:28:40.752117 2018] [ssl:warn] [pid 14579] AH01909: www.example.com:8443:0 server certificate does NOT include an ID which matches the server name
[Tue Oct 02 15:28:40.766009 2018] [mpm_prefork:notice] [pid 14579] AH00163: Apache/2.4.35 (Unix) OpenSSL/1.0.2p PHP/7.2.10 configured -- resuming normal operations
[Tue Oct 02 15:28:40.766052 2018] [core:notice] [pid 14579] AH00094: Command line: '/usr/local/opt/httpd/bin/httpd'

【问题讨论】:

    标签: php macos apache apache2 macos-mojave


    【解决方案1】:

    我在使用 PHP 5.6 时遇到过类似的问题,因为它在 Mojave 升级之前运行良好。我执行了以下操作以成功解决该问题:

    1. 运行以下命令 sudo nano /etc/apache2/httpd.conf

    2. 确保以下模块未注释:

      LoadModule authz_core_module libexec/apache2/mod_authz_core.so

      LoadModule authz_host_module libexec/apache2/mod_authz_host.so

      LoadModule userdir_module libexec/apache2/mod_userdir.so

      LoadModule include_module libexec/apache2/mod_include.so

      LoadModule rewrite_module libexec/apache2/mod_rewrite.so

    我已经在 httpd.conf 中添加了缺少的一项

    1. 为您检查正确的 php 模块(PHP 5.6 或 7.x)并通过添加行或注释/取消注释行来加载所需的模块

      LoadModule php5_module libexec/apache2/libphp5.so

    LoadModule php7_module libexec/apache2/libphp7.so
    

    在行首添加“#”来注释不需要的部分

    1. 运行以下命令以重新启动和测试 apapche 一种。须藤 apachectl 重启 湾。 apachectl 配置测试

    检查那里的任何错误

    对于 PHP 5.6: 如果您在升级之前已经在系统中安装了带有 brew 的 php 5,并且上述更改会产生如下错误 “httpd:/private/etc/apache2/httpd.conf 第 180 行的语法错误:无法将 libexec/apache2/libphp5.so 加载到服务器中:dlopen(/usr/libexec/apache2/libphp5.so, 10): 图像不是找到”

    然后在系统中搜索libphp5.so,如果找到,将其复制到“/usr/libexec/apache2/”

    在我的例子中,命令是

    sudo cp ./local/Cellar/php@5.6/5.6.25_1/libexec/apache2/libphp5.so /usr/libexec/apache2/
    

    这一切都让我的系统正常工作

    【讨论】:

    • 我运行 PHP 7,最多 4 步解决了我的问题。非常感谢!
    • 最重要的命令之一是:"sudo apachectl configtest" 以便查看任何配置错误。
    • 对于 mac Mojave 使用 sudo /usr/sbin/apachectl restart 而不是 sudo apachectl restart
    【解决方案2】:

    除了 adang 的回复,我还不得不取消注释这一行:

    Include /private/etc/apache2/extra/httpd-userdir.conf
    

    为了让它知道哪些用户目录可用。

    在 /private/etc/apache2/extra/httpd-userdir.conf 中

    我不得不取消注释这一行:

    Include /private/etc/apache2/users/*.conf
    

    然后:

    sudo apachectl restart
    

    【讨论】:

    • 谢谢,需要在其他解决方案中添加
    【解决方案3】:

    我在安装 Mac OS Mojave 后遇到了同样的问题。 我已经完成了以下步骤,它对我有用:

    brew update 
    

    然后:

    brew upgrade
    

    我已通过取消注释以下行来编辑 /etc/apache2/httpd.conf:

    LoadModule php7_module libexec/apache2/libphp7.so
    

    打开终端并重启apache服务器:

    sudo apachectl restart
    

    you might find the post on this link helpful

    【讨论】:

      【解决方案4】:

      我按照上述答案中的说明操作,但在尝试访问我的 /Users/myuser/Sites/ 文件夹时仍然收到 403 Forbidden。为了解决这个问题,我必须将 /etc/apache2/httpd.conf 中的用户从 _www 更改为我自己的用户。

      为此,请使用您最喜欢的编辑器 /etc/apache2/httpd.conf 编辑您的 httpd.conf 文件。寻找:

      User _www
      

      替换为您的用户:

      User myuser
      

      然后重启apache:

      sudo apachectl restart
      

      【讨论】:

        【解决方案5】:

        因为主题是 Mojave 升级后的 httpd.conf 搞砸了,我在 sudo apachectl configtest 期间也遇到了这个错误

        Could not reliably determine the server's fully qualified domain name, using XXX. Set the 'ServerName' directive globally to suppress this message
        

        我发现 httpd.conf 中的#ServerName localhost:80 被注释掉了,取消注释解决了我的问题。

        【讨论】:

          猜你喜欢
          • 2019-03-10
          • 1970-01-01
          • 2019-04-09
          • 1970-01-01
          • 2019-07-12
          • 1970-01-01
          • 2019-03-16
          • 2017-06-10
          • 2019-03-03
          相关资源
          最近更新 更多