【问题标题】:OS X Sierra + XAMPP 7.1.9-0 + Extension mongodb.so is not startingOS X Sierra + XAMPP 7.1.9-0 + 扩展 mongodb.so 未启动
【发布时间】: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

【问题讨论】:

    标签: php mongodb macos xampp homebrew


    【解决方案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 后会发生什么。即使删除它也不能解决问题。

    【讨论】:

      猜你喜欢
      • 2017-12-14
      • 2018-04-29
      • 2019-07-01
      • 2016-10-23
      • 2011-09-19
      • 2017-02-08
      • 2021-02-17
      • 2018-12-20
      • 2011-10-28
      相关资源
      最近更新 更多