Mac OS Sierra 上的 Apache:非法指令:4 $HTTPD
Apache on Mac OS Sierra: Illegal instruction: 4 $HTTPD
背景
我按照 instructions here 在我的 Mac (运行ning Sierra 10.12.4) 上配置 Apache、PHP 和 MySQL 并获得一切正常。然后我使用 Migration Assistant 将所有内容复制到新的 Mac (Mac #2) 供其他开发人员使用。首次登录时,我打开了 Chrome 并访问了 localhost
。我事先没有对 Mac #2 进行任何更改。
问题
在 Mac #2 上,当我访问 Chrome 中的 localhost
时,我得到一个 ERR_CONNECTION_REFUSED
(无法访问此站点: localhost 拒绝连接)。一些挖掘让我找到了 this Q/A on Apple Stack Exchange,所以我在终端中尝试了以下操作:
ping 127.0.0.1
(成功;即“来自 127.0.0.1 的 64 个字节...”)
ping localhost
(成功)
ping myvirtualhost.dev
(成功)
情节丰富
然后我尝试 运行 apachectl configtest
,这引发了以下错误:
/usr/local/bin/apachectl: line 79: 1132 Illegal instruction: 4 $HTTPD -t
好的,sudo apachectl -k restart
怎么样?不,同样的错误:
/usr/local/bin/apachectl: line 79: 1170 Illegal instruction: 4 $HTTPD "$@"
省略 -k
标志会引发相同的错误,但最后的字符有点不同:
/usr/local/bin/apachectl: line 79: 1184 Illegal instruction: 4 $HTTPD -k $ARGV
我试过的
我无法停止、启动、重新启动或对 Apache 做任何事情。 Google 搜索错误并没有带来太多。我已经尝试从我的备份中恢复 httpd.conf
,然后重新启动我的计算机。我检查了 /etc/hosts
,它看起来很正常。我不知道还能做什么。
Apache 的配置不知何故搞砸了,但我不确定在哪里。我该怎么办?
其他可能有用的信息
运行 httpd -v
终端产量:
Server version: Apache/2.4.25 (Unix)
在终端中输入 php -v
得到:
Illegal instruction: 4
所以我重新安装,现在 php -v
产生:
PHP 5.6.30 (cli) (built: Apr 7 2017 13:12:17)
键入 which php
得到:
/usr/local/bin/php
在我的例子中,它与 'other' conf 文件中加载的 php 二进制文件有关:
尝试 运行:
sudo mv /private/etc/apache2/other/+php-osx.conf /private/etc/apache2/other/+php-osx.conf-bak
然后重启apache
如果您没有此 conf 文件,很可能是您系统上加载的 php 二进制文件导致了问题,因为该错误与我看到的非常相似。
我 运行 遇到了与您提到的完全相同的场景和问题。经过一些黑客攻击和搞乱之后,我能够解决你提到的问题。
我相信重新安装 httpd24
似乎可以解决问题![=19=]
$ brew reinstall httpd24
我在重新安装之前尝试过的其他一些事情:
brew upgrade
- 正在卸载
php56
(我有 php56
和 php70
以及来自 blog post you mentioned 的 sphp
脚本)
brew doctor
背景
我按照 instructions here 在我的 Mac (运行ning Sierra 10.12.4) 上配置 Apache、PHP 和 MySQL 并获得一切正常。然后我使用 Migration Assistant 将所有内容复制到新的 Mac (Mac #2) 供其他开发人员使用。首次登录时,我打开了 Chrome 并访问了 localhost
。我事先没有对 Mac #2 进行任何更改。
问题
在 Mac #2 上,当我访问 Chrome 中的 localhost
时,我得到一个 ERR_CONNECTION_REFUSED
(无法访问此站点: localhost 拒绝连接)。一些挖掘让我找到了 this Q/A on Apple Stack Exchange,所以我在终端中尝试了以下操作:
ping 127.0.0.1
(成功;即“来自 127.0.0.1 的 64 个字节...”)ping localhost
(成功)ping myvirtualhost.dev
(成功)
情节丰富
然后我尝试 运行 apachectl configtest
,这引发了以下错误:
/usr/local/bin/apachectl: line 79: 1132 Illegal instruction: 4 $HTTPD -t
好的,sudo apachectl -k restart
怎么样?不,同样的错误:
/usr/local/bin/apachectl: line 79: 1170 Illegal instruction: 4 $HTTPD "$@"
省略 -k
标志会引发相同的错误,但最后的字符有点不同:
/usr/local/bin/apachectl: line 79: 1184 Illegal instruction: 4 $HTTPD -k $ARGV
我试过的
我无法停止、启动、重新启动或对 Apache 做任何事情。 Google 搜索错误并没有带来太多。我已经尝试从我的备份中恢复 httpd.conf
,然后重新启动我的计算机。我检查了 /etc/hosts
,它看起来很正常。我不知道还能做什么。
Apache 的配置不知何故搞砸了,但我不确定在哪里。我该怎么办?
其他可能有用的信息
运行 httpd -v
终端产量:
Server version: Apache/2.4.25 (Unix)
在终端中输入 php -v
得到:
Illegal instruction: 4
所以我重新安装,现在 php -v
产生:
PHP 5.6.30 (cli) (built: Apr 7 2017 13:12:17)
键入 which php
得到:
/usr/local/bin/php
在我的例子中,它与 'other' conf 文件中加载的 php 二进制文件有关:
尝试 运行:
sudo mv /private/etc/apache2/other/+php-osx.conf /private/etc/apache2/other/+php-osx.conf-bak
然后重启apache
如果您没有此 conf 文件,很可能是您系统上加载的 php 二进制文件导致了问题,因为该错误与我看到的非常相似。
我 运行 遇到了与您提到的完全相同的场景和问题。经过一些黑客攻击和搞乱之后,我能够解决你提到的问题。
我相信重新安装 httpd24
似乎可以解决问题![=19=]
$ brew reinstall httpd24
我在重新安装之前尝试过的其他一些事情:
brew upgrade
- 正在卸载
php56
(我有php56
和php70
以及来自 blog post you mentioned 的sphp
脚本) brew doctor