MAC上跑PHP连接Mongodb


  • administrators

    用惯了NPM install,PHP真是麻烦,比如要连个Mongodb需要安装MongoDB PHP Driver 。
    https://stackoverflow.com/questions/38766586/fatal-error-class-mongodb-driver-manager-not-found

    这需要通过PECL。https://www.php.net/manual/en/mongodb.installation.pecl.php

    Mac自带PHP没有装PECL,怎么办?这时候最好参照官方文档,网上的tutorial不一定适用于你的电脑设置。
    https://pear.php.net/manual/en/installation.getting.php

    $ curl -O https://pear.php.net/go-pear.phar
    $ php -d detect_unicode=0 go-pear.phar
    

    有了梨子,应该可以PECL了吧?

    $ sudo pecl install mongodb
    

    抱歉,不行,为什么?不知道!自带的PHP不让啊!
    改brew install php吧?

    brew install php@7.4
    

    但是,PHP还是用就版本啊!
    是啊,改profile:

    echo 'export PATH="/usr/local/opt/php@7.4/bin:$PATH"' >> ~/.bash_profile
    echo 'export PATH="/usr/local/opt/php@7.4/sbin:$PATH"' >> ~/.bash_profile
    source ~/.bash_profile
    

    现在可以装了吧?不行,不知道为什么,php文件夹下多了一个pecl的快捷方式。

    Warning: mkdir(): File exists in System.php on line 294
    PHP Warning: mkdir(): File exists in /usr/local/Cellar/php/7.4.4/pecl
    

    把这个shortcut删除后,终于装上了"MongoDB PHP Driver"
    真TM蛋疼啊!!!

    其实还没完,哪位天才的设计啊???extension_dir 又不对了,
    run php --ini 可以查看php.ini的location,然后打开php.ini,把extension_dir改一下,pecl安装有问题,正确路径应该是:“/usr/local/Cellar/php/7.4.4/pecl/20190902/” , 鬼知道为什么,它被设置成“; extension_dir = "/usr/local/lib/php/pecl/20190902"”。
    只有改后,extension才可以load。


  • administrators

    @梵总 如果用mac, 默认用zsh,不是bash。所以“export PATH” 需要加到~/.zshrc

    echo 'export PATH="/usr/local/opt/php@7.4/bin:$PATH"' >> ~/.zshrc
    echo 'export PATH="/usr/local/opt/php@7.4/sbin:$PATH"' >> ~/.zshrc
    source ~/.zshrc