我正在使用最新的OS X塞拉利昂10.12.6,用PHP 7.1安装XAMPP 7.1.9,并安装最新的homebrew/homebrew core (git修订版7598;最后一次commit 2017-10-18)来实现这个目标:使用最新的mongodb扩展(即替换旧的mongo扩展)。
在像这样干净地安装mongodb之后:
brew tap homebrew/php
brew install php71-mongodb我在以下文件中找到了mongodb扩展:
/usr/local/opt/php71-mongodb/mongodb.so我将其添加到XAMPP的php.ini文件中-安装:/Applications/xamppfiles/等
extension="/usr/local/opt/php71-mongodb/mongodb.so"之后,我将分别重新启动Apache2服务:/Applications/xamppfiles/ctlscript.sh重新启动apache
我所能收到的唯一回复就是一个错误:
/Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.conf:40语法确定/Applications/XAMPP/xamppfiles/apache2/scripts/ctl.sh : apache不运行AH00548: NameVirtualHost不起作用,并将在下一个版本中删除/Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.conf:40语法OK /Applications/XAMPP/xamppfiles/apache2/scripts/ctl.sh : httpd已启动
奇怪的事情从这里开始:
当我使用XAMPP用户界面重新启动服务时,Apache2不再工作了。
即使在CLI上重新启动服务也会修复这个问题。
即使在从mongodb.so中删除对php.ini的引用之后,也会修复这个问题。
问题是:我没有收到任何错误。不是在/Applications/XAMPP/xamppfiles/logs/php_error.log也不是在/Applications/XAMPP/xamppfiles/logs/error.log.
发布于 2017-10-18 14:57:03
参见下面的更新
在这个线程中,我找到了一种使用可工作的mongodb扩展重新启动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是如何启动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之后,我在php.ini文件中添加了著名的monGodb.so-行文。
从现在开始,我无法再次使用UI启动Apache。因此,我从上面的链中获得最后一个命令,并执行它,结果如下:
(13)权限被拒绝: AH00086: httpd:未能打开错误日志文件AH00086/Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.conf:40 (13)权限被拒绝: AH00072: make_sock:无法绑定到地址::80(13)权限被拒绝: AH00072: make_sock:无法绑定到地址0.0.0.0:80没有监听套接字可用,关闭AH00015:无法打开日志
查找#1:只是将扩展添加到php.ini类型的php.ini中,从error.log中移除写标志
因此,这很容易修复。
sudo chmod a+w /Applications/XAMPP/xamppfiles/logs/error_log.现在,在这个问题的历史上,我第一次从error.log收到了一个真正的错误消息,它告诉我一些事情:
(13)权限被拒绝: AH00072: make_sock:无法绑定到地址::80(13)权限被拒绝: AH00072: make_sock:无法绑定到地址0.0.0.0:80没有侦听套接字可用,关闭AH00015:无法打开日志
查找#2:从命令行以sudo方式启动Apache将修复它
未解之谜
我仍然不清楚,在将扩展添加到php.ini之后会发生什么。即使是移除它也不能解决问题。
https://stackoverflow.com/questions/46813236
复制相似问题