mongo php驱动程序扩展在cli中加载,而不是OSX中的apache

Posted

技术标签:

【中文标题】mongo php驱动程序扩展在cli中加载,而不是OSX中的apache【英文标题】:mongo php driver extension loads in cli, not apache in OSX 【发布时间】:2016-12-18 17:10:50 【问题描述】:

我正在运行 OSX El Capitan。我已经使用 brew 安装了 mongo 驱动程序:

brew install php70-mongodb

安装完成,似乎工作正常。当我在 CLI 上执行“php -m”时,它显示已安装“mongo”。使用 Mongo 驱动程序运行脚本有效。 当我尝试通过 Apache2 运行相同的脚本时,就会出现问题。然后,由于以下代码行,我收到一个未安装 Mongo 的错误:

if (!extension_loaded('mongo')) die("MongoDB is not installed!");

phpinfo() 确实显示没有安装 Mongo。 我使用以下方法为 apache 创建了一个 php.ini 文件:

cp php.ini.default php.ini

并在文件末尾添加以下行:

extension="/usr/local/opt/php56-mongo/mongo.so"

重新启动 Apache 后,它似乎仍然没有加载。我尝试在同一目录中创建 mongo.so 的副本并赋予 _www 所有权(认为可能是这种情况),但仍然没有工作。

奇怪的是,系统告诉我有邮件,它是从我的 Macbook 发送到我的 Macbook 的,内容如下:

PHP 警告:PHP 启动:mongo:无法初始化模块 使用模块 API=20131226 编译的模块 使用模块 API=20121212 编译的 PHP 这些选项需要匹配 在第 0 行的未知中

任何关于如何让扩展加载到 Apache 上的帮助将不胜感激!......

【问题讨论】:

确实,谢谢,我遇到了类似的问题,我必须为 extension 提供正确的 mongodb 设置路径。它与您提供的位置相同。 【参考方案1】:

看起来我正在运行 PHP 5.5 版,并且按照 php.net 的说明运行了

brew install php56-mongo

显然,我错过了您必须根据安装的版本更改此行。因此,将其更改为:

brew install php55-mongo

并按照有关如何删除已安装的其他版本的 brew 说明(键入此命令后将显示如何执行此操作的说明)- 新版本已安装。

之后,我更新了 /etc/php.ini 以指向正确的目录(这与之前的安装不同)——它可以工作了!

【讨论】:

以上是关于mongo php驱动程序扩展在cli中加载,而不是OSX中的apache的主要内容,如果未能解决你的问题,请参考以下文章

从 CLI C++ 应用程序在库中加载 C# WPF 表单

如何在 PDO 中加载 sqlite 扩展?

如何使用 NGINX、PHP-FPM 在 docker-compose.yml 文件中加载 mysqli 扩展

避免在 C++/CLI 项目中加载 .Net Dlls?

iPad应用程序仅在设备上而不是在模拟器中加载笔尖时崩溃

在 node.js CLI 中加载 jQuery [重复]