macOS Mojave 更新后 Apache 不工作
Apache not working after macOS Mojave update
好的,将 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 5.6 时遇到过类似的问题,因为在升级 Mojave 之前 运行 还不错。我执行了以下操作以成功解决问题:
运行 下面的命令
须藤纳米 /etc/apache2/httpd.conf
确保以下模块未被注释:
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
中添加了缺少的那个
检查正确的 php 模块(PHP 5.6 或 7.x)并通过添加行或 [=69= 加载所需的模块] 行
LoadModule php5_module libexec/apache2/libphp5.so
或
LoadModule php7_module libexec/apache2/libphp7.so
通过在行首添加“#”来注释不需要的部分
- 运行 以下命令用于 apapche 重启和测试
一种。 sudo apachectl 重启
b. apachectl 配置测试
检查那里是否有任何错误
对于PHP 5.6:
如果您在升级之前已经在系统中安装了带有 brew 的 php 5,并且上述更改会产生如下错误
"httpd: Syntax error on line 180 of /private/etc/apache2/httpd.conf: Cannot load libexec/apache2/libphp5.so into server: dlopen(/usr/libexec/apache2/libphp5.so, 10): image not found"
然后在系统中搜索libphp5.so,如果找到就复制到“/usr/libexec/apache2/”
在我的例子中命令是
sudo cp ./local/Cellar/php@5.6/5.6.25_1/libexec/apache2/libphp5.so /usr/libexec/apache2/
这一切都让我的系统正常工作
根据 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
我按照上述答案中的说明进行操作,但在尝试访问我的 /Users/myuser/Sites/
文件夹时仍然收到 403 Forbidden。要解决此问题,我必须将 /etc/apache2/httpd.conf
中的用户从 _www
更改为我自己的用户。
为此,请使用您喜欢的编辑器 /etc/apache2/httpd.conf
编辑您的 httpd.conf 文件。寻找:
User _www
替换为您的用户:
User myuser
然后重启apache:
sudo apachectl restart
我在安装 Mac OS Mojave 后遇到了同样的问题。
我已经完成了以下步骤并且对我有用:
brew update
然后:
brew upgrade
我通过取消注释以下行来编辑 /etc/apache2/httpd.conf:
LoadModule php7_module libexec/apache2/libphp7.so
打开终端并重启apache服务器:
sudo apachectl restart
因为主题是 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
被注释掉了,取消注释解决了我的问题。
好的,将 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 5.6 时遇到过类似的问题,因为在升级 Mojave 之前 运行 还不错。我执行了以下操作以成功解决问题:
运行 下面的命令 须藤纳米 /etc/apache2/httpd.conf
确保以下模块未被注释:
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
中添加了缺少的那个检查正确的 php 模块(PHP 5.6 或 7.x)并通过添加行或 [=69= 加载所需的模块] 行
LoadModule php5_module libexec/apache2/libphp5.so
或
LoadModule php7_module libexec/apache2/libphp7.so
通过在行首添加“#”来注释不需要的部分
- 运行 以下命令用于 apapche 重启和测试 一种。 sudo apachectl 重启 b. apachectl 配置测试
检查那里是否有任何错误
对于PHP 5.6: 如果您在升级之前已经在系统中安装了带有 brew 的 php 5,并且上述更改会产生如下错误 "httpd: Syntax error on line 180 of /private/etc/apache2/httpd.conf: Cannot load libexec/apache2/libphp5.so into server: dlopen(/usr/libexec/apache2/libphp5.so, 10): image not found"
然后在系统中搜索libphp5.so,如果找到就复制到“/usr/libexec/apache2/”
在我的例子中命令是
sudo cp ./local/Cellar/php@5.6/5.6.25_1/libexec/apache2/libphp5.so /usr/libexec/apache2/
这一切都让我的系统正常工作
根据 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
我按照上述答案中的说明进行操作,但在尝试访问我的 /Users/myuser/Sites/
文件夹时仍然收到 403 Forbidden。要解决此问题,我必须将 /etc/apache2/httpd.conf
中的用户从 _www
更改为我自己的用户。
为此,请使用您喜欢的编辑器 /etc/apache2/httpd.conf
编辑您的 httpd.conf 文件。寻找:
User _www
替换为您的用户:
User myuser
然后重启apache:
sudo apachectl restart
我在安装 Mac OS Mojave 后遇到了同样的问题。 我已经完成了以下步骤并且对我有用:
brew update
然后:
brew upgrade
我通过取消注释以下行来编辑 /etc/apache2/httpd.conf:
LoadModule php7_module libexec/apache2/libphp7.so
打开终端并重启apache服务器:
sudo apachectl restart
因为主题是 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
被注释掉了,取消注释解决了我的问题。