OS X Sierra + XAMPP 7.1.9-0 + 扩展 mongodb.so 未启动

Posted

技术标签:

【中文标题】OS X Sierra + XAMPP 7.1.9-0 + 扩展 mongodb.so 未启动【英文标题】:OS X Sierra + XAMPP 7.1.9-0 + Extension mongodb.so is not starting 【发布时间】:2018-03-30 12:11:51 【问题描述】:

我正在使用最新的 OS X Sierra 10.12.6、XAMPP 7.1.9 和 php 7.1,并且我安装了最新的 Homebrew/homebrew-core(git 修订版 7598;最后一次提交 2017-10-18)以实现这一目标: 使用最新的 mongodb-extension(即替换旧的 mongo-extension)。

像这样干净安装 mongodb 后:

 brew tap homebrew/php
 brew install php71-mongodb

我在以下位置找到了 mongodb 扩展:

 /usr/local/opt/php71-mongodb/mongodb.so

我将此添加到我的 XAMPP 安装的 php.ini 文件中: /Applications/XAMPP/xamppfiles/etc

extension="/usr/local/opt/php71-mongodb/mongodb.so"

之后我将分别重启 XAMPP Apache2 服务: /Applications/XAMPP/xamppfiles/ctlscript.sh重启apache

我将收到的唯一响应是一个错误:

AH00548:NameVirtualHost 无效,将在接下来移除 发布/Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.conf:40 语法 OK /Applications/XAMPP/xamppfiles/apache2/scripts/ctl.sh : apache not running AH00548: NameVirtualHost 没有效果,将 在下一个版本中删除 /Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.conf:40 语法 好的 /Applications/XAMPP/xamppfiles/apache2/scripts/ctl.sh :httpd 开始

奇怪的事情从这里开始:

当我使用 XAMPP 用户界面重新启动服务时,Apache2 不再工作。

即使在 CLI 上重新启动服务也可以解决此问题。

Even 从 php.ini 中删除对 mongodb.so 的引用后将解决此问题。

问题是:我没有收到任何错误。不在 /Applications/XAMPP/xamppfiles/logs/php_error.log 也不在 /Applications/XAMPP/xamppfiles/logs/error.log

【问题讨论】:

【参考方案1】:

见下方更新

我在此线程中找到了一种使用有效的 mongodb-extension 重新启动 Apache2 服务的方法:

https://github.com/mongodb/mongo-php-driver/issues/247

使用此命令在 CLI 上重新启动服务对我有帮助:

/Applications/XAMPP/xamppfiles/bin/httpd -E /Applications/XAMPP/xamppfiles/logs/error_log

仅此而已。

但我仍然明白这一切是如何联系起来的。再次使用 XAMPP UI 重新启动时,它再次无法正常工作。但用户界面在一开始确实有效。因此,mongodb 文件(或者可能是自制软件)的安装以某种方式损坏了 XAMPP 安装中的某处。

后天更新

我安装了一个全新的 XAMPP,从零开始 花了一段时间才发现,XAMPP UI 做了什么来启动 apache,它是一个命令链:

/Applications/XAMPP/xamppfiles/ctlscript.sh start apache
-> 
/Applications/XAMPP/xamppfiles/apache2/scripts/ctl.sh start
->
/Applications/XAMPP/xamppfiles/xampp startapache 
-> 
/Applications/XAMPP/xamppfiles/bin/apachectl -k start -E /Applications/XAMPP/xamppfiles/logs/error_log -DSSL -DPHP
->
/Applications/XAMPP/xamppfiles/bin/httpd -k start -E /Applications/XAMPP/xamppfiles/logs/error_log -DSSL -DPHP

之后我将著名的 mongodb.so-line 添加到 php.ini 文件中。

从现在开始,我无法使用 UI 再次启动 Apache。所以我从上面的链中取出最后一个命令并执行它,结果如下:

(13)Permission denied: AH00086: httpd: could not open error log file /Applications/XAMPP/xamppfiles/logs/error_log。 AH00548: NameVirtualHost 没有效果,下个版本会移除 /Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.conf:40 (13)Permission denied: AH00072: make_sock: could not bind to address [::]:80 (13)Permission denied: AH00072: make_sock: could not bind to 地址 0.0.0.0:80 没有可用的监听套接字,正在关闭 AH00015: 无法打开日志

发现 #1: 只需将扩展名添加到 php.ini 类型就可以从 error.log 中删除写入标志

所以,这很容易解决

sudo chmod a+w /Applications/XAMPP/xamppfiles/logs/error_log.

现在,在这个问题的历史上,我第一次从 error.log 中收到一条真正的错误消息,告诉我一些事情:

(13)权限被拒绝:AH00072:make_sock:无法绑定到地址 [::]:80 (13)Permission denied: AH00072: make_sock: could not bind to 地址 0.0.0.0:80 没有可用的监听套接字,正在关闭 AH00015: 无法打开日志

发现 #2:从命令行以 sudo 启动 Apache 将修复它

未解之谜

我仍然不清楚,将扩展名添加到 php.ini 后会发生什么。即使删除它也不能解决问题。

【讨论】:

以上是关于OS X Sierra + XAMPP 7.1.9-0 + 扩展 mongodb.so 未启动的主要内容,如果未能解决你的问题,请参考以下文章

sh Mac OS X High Sierra / PHP Apache httpd配置节点NPM

XAMPP MySQL 启动在 MacBook Air (MacOS Sierra 10.12.2) 上失败

在 Mac OS X Sierra 上为 Django Python 安装 mysqlclient

macmac os X更新High Sierra后出现的问题

如何在 mac os x sierra 上安装 libX11-dev

在 OS X 10.11 El Capitan、macOS 10.12 Sierra、macOS 10.13 High Sierra (< 10.13.3) 上安装 pecl 和 pear