apache重启错误分段错误:11 $HTTPD“$@”

Posted

技术标签:

【中文标题】apache重启错误分段错误:11 $HTTPD“$@”【英文标题】:apache restart error Segmentation fault: 11 $HTTPD "$@" 【发布时间】:2017-09-29 07:55:51 【问题描述】:

我是 Web 开发的新手,想在 mac os Sierra 上创建自己的本地服务器以进行一些开发。我已经学习了一些关于启动和运行 apache、phpmysql 的教程,并且只完成了 php 部分,这是我目前失败的地方。

我设法通过http://localhost/~username 访问本地主机,并在那里找到了我的目录,但是一旦我取消注释httpd.conf 中的php LoadModule,我访问本地主机的能力就会失败,并且出现错误ERR_CONNECTION_REFUSED。这是在我尝试使用

重新启动 apache 之后
sudo apachectl -k restart

哪个抛出了这个错误:

httpd 没有运行,正在尝试启动 /usr/sbin/apachectl:第 92 行:11399 分段错误:11 $HTTPD "$@"

来自tail -f /var/log/apache2/error_log 的错误日志有以下内容:

AH00112:警告:DocumentRoot [/usr/docs/dummy-host.example.com] 不存在 AH00112:警告:DocumentRoot [/usr/docs/dummy-host2.example.com] 不存在 [Mon May 01 19:33:52.138346 2017] [mpm_prefork:notice] [pid 3454] AH00163: Apache/2.4.23 (Unix) PHP/7.1.1 已配置——恢复正常操作 [Mon May 01 19:33:52.138434 2017] [core:notice] [pid 3454] AH00094:命令行:'/usr/sbin/httpd -D FOREGROUND' [2017 年 5 月 1 日星期一 19:37:22.694456] [mpm_prefork:notice] [pid 3454] AH00169:捕获 SIGTERM,正在关闭 AH00112:警告:DocumentRoot [/usr/docs/dummy-host.example.com] 不存在 AH00112:警告:DocumentRoot [/usr/docs/dummy-host2.example.com] 不存在 [Mon May 01 19:53:54.632167 2017] [mpm_prefork:notice] [pid 4059] AH00163: Apache/2.4.23 (Unix) PHP/7.1.1 已配置——恢复正常操作 [Mon May 01 19:53:54.632251 2017] [core:notice] [pid 4059] AH00094:命令行:'/usr/sbin/httpd -D FOREGROUND' [2017 年 5 月 1 日星期一 20:04:26.379765] [mpm_prefork:notice] [pid 4059] AH00169:捕获 SIGTERM,正在关闭

我已经花了几个小时查看有关 *** 以及其他来源的类似主题,但无济于事。我对这一切也很陌生,因此我对很多术语都不太了解。根据我的理解(无论它可能是什么),这可能与一个坏的模块或 php7 没有正确链接有关?

我使用的是apache版本:

Server version: Apache/2.4.23 (Unix)
Server built:   Aug  8 2016 16:31:34
php version 7.1.1

configtest 给了我以下信息:

AH00112:警告:DocumentRoot [/usr/docs/dummy-host.example.com] 不存在 AH00112:警告:DocumentRoot [/usr/docs/dummy-host2.example.com] 不存在 语法OK

任何建议将不胜感激。对下一步该做什么彻底失望了:(

【问题讨论】:

您是否尝试过阅读错误信息?是英文的,仅供参考。 /usr/docs/dummy-host.example.com 目录不存在。所以先手动创建它,看看会发生什么。这不是火箭科学。编程就是阅读正在发生的事情并修复它。 或许最好在serverfault.com上提问 我已经阅读了所有内容,但正如我所说,我一直在关注教程,因为我是新手。其中没有提到创建这些目录,所以我没有。这些目录的目的是什么@xorifelse 谢谢@nogad。我当然也会在那里添加这篇文章 这将是(根据错误消息)您的文档根目录。您的网络服务器的根文件夹。 localhost 将引用 /usr/docs/dummy-host.example.com/index.html 【参考方案1】:

启动 Apache 时出现“Segmentation fault”错误,因为 Apache 试图同时加载新旧版本的 php。查看这些说明:https://coolestguidesontheplanet.com/upgrade-php-on-osx/,安装脚本会在

中创建一个加载新 php 7 版本的文件
/etc/apache2/other/+php-osx.conf

该脚本还假定通过在 apache 配置文件中禁用旧 php 版本的加载,

/etc/apache2/httpd.conf

注释掉这一行:

#LoadModule php5_module libexec/apache2/libphp5.so

但它并没有为我做到这一点。一旦我手动将其注释掉,Apache 又开始使用

sudo apachectl -k restart

【讨论】:

将 php 5.6 升级到 7 后遇到同样的问题。谢谢 这救了我的皮。我吹了大约 3 个小时试图弄清楚这一点。 在通过 Homebrew 安装 Apache 的 OSX 上,实际配置在 /usr/local/etc/httpd 而不是 /etc/apache2 所以我不得不在那里更改它。否则效果很好,谢谢 谢谢你,让我几乎不必放弃并重新启动我的机器。 这对我帮助很大。在我的浏览器中得到随机 ERR_EMPTY_RESPONSE,检查日志并看到 seg 错误,这导致我来到这里。不得不在我的/etc/apache2/httpd.conf 文件中注释掉这一行:LoadModule php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so。似乎它已经被加载到其他地方,当我这样做时只给了我一个警告apachectl configtest【参考方案2】:

如果你想在你的本地主机上创建虚拟主机,你应该更改 httpd-vhosts.conf 、 hosts 文件和 httpd.conf 以启用虚拟主机 ....

但是

如果您只想安装 XAMPP 或 WAMP,则无需更改文件,在 htdocs 文件夹(XAMPP)或 www 文件夹(WAMP)中创建新文件夹,然后在地址栏中输入如下: 本地主机/新文件夹

重新安装 XAMPP 并在 htdocs 文件夹中创建新文件夹项目。

目录 htdocs 文件夹:/Applications/XAMPP/xamppfiles/htdocs/(创建项目文件夹)

启用 Apache 和 Mysql

然后在地址栏输入 firefox 或 chrome :localhost/projectfoldername

请阅读这篇文章: https://donatstudios.com/PHP-in-OS-X-Yosemite

下载 Xampp:https://www.apachefriends.org/download.html

【讨论】:

虽然我没有任何 OSX 经验,但我不知道这将如何解决问题。

以上是关于apache重启错误分段错误:11 $HTTPD“$@”的主要内容,如果未能解决你的问题,请参考以下文章

Apache中的分段错误11

源码编译路径错误导致的Apache 无法重启问题解决方法

Apache / PHP分段错误

部署OpenStack问题汇总--解决apache启动错误"httpd:Could not reliably determine..."

linux系统用service httpd restart重启apache2 提示httpd:unrecognized service 该怎么解决

Centos下Apache遇到/usr/lib64/libnsssysinit.so: undefined symbol: PR_GetEnvSecure错误