任何帮助都会很棒。我被困在这几个小时。我正在尝试安装Mongo以在Mac上使用PHP。我安装了Pear / pecl并正在工作。当我致电sudo pecl install mongo
时,一切看起来都在成功编译/构建,但最后我得到了这条消息。
构建过程成功完成安装 ' /usr/lib/php/extensions/no-debug-non-zts-20121212/mongo.so'错误: 没能写 /usr/lib/php/extensions/no-debug-non-zts-20121212/mongo.so (复印件(/usr/lib/php/extensions/no-debug-non-zts-20121212/mongo.so): 无法打开流:不允许操作)
mongo.so永远不会写。有人可以帮忙吗?我在Mac OSX El Capitan上使用MAMP。
答案 0 :(得分:3)
我通过更改extension_dir
中的php.ini
来解决了这个问题。
创建本地扩展程序目录并将现有扩展名复制到
mkdir -p /usr/local/lib/php/extensions
cp /usr/lib/php/extensions/no-debug-non-zts-20121212/* /usr/local/lib/php/extensions/
更新您的php.ini
,更改extension_dir
并启用mongo:
extension_dir = "/usr/local/lib/php/extensions/"
extension=mongo.so
现在扩展名dir是可写的,您可以复制mongo.so
那里。
以下是如何编译mongo.so
wget http://pecl.php.net/get/mongo
tar xzvf mongo
cd mongo-1.6.12
phpize
./configure --with-php-config=/usr/bin/php-config --with-mongo-sasl=no
make
您可以在.libs文件夹中找到已编译的库:.libs/mongo.so
将其复制到扩展名目录
cp .libs/mongo.so /usr/local/bin/php/extensions/
最后,您可以通过在命令行中键入php -m | grep mongo
来检查它是否正常工作。
答案 1 :(得分:2)
基本上问题是El Capitan的Rootless功能。需要在恢复模式下禁用它,执行pecl安装并再次启用它。
出于某种原因,pecl没有直接将它安装到我的php扩展中,因此,我不得不将从本地库生成的mongo扩展pecl复制到我的php扩展文件夹xampp文件中以使其正常工作