0%

Laravel3 命令行下无法安装 bundle

问题截图:
laravel_openssl_1

如果你有出现如上问题,请先参考博文 《开启 php 的 openssl 扩展》

如果你使用的是 lamp 的套件,比如 wamp 或者 xampp。当你开启 openssl,phpinfo 中也显示已经载入 openssl 模块,但是上述代码依然无法运行。

经过排查,原因应该是出在套件对 php.ini 的加载上,也就是你更改的 php.ini 和你命令行下使用的 php.ini 不是同一个。

这里以我使用的 wamp 举例:

windows 平台,命令行下输入 php -i find /i "openssl"
laravel_openssl_3
我们看到实际是没有开启的。

输入 php --ini
laravel_openssl_4

显示载入的是 php 目录下的 ini

而我们在网址中通过访问 phpinfo () 得到的是
laravel_openssl_5
实际是 apache 下的

那问题就转变成 wamp 是如何加载 php.ini 的,而且经过查找,存在几个 ini 文件

“xxwampbinapacheapache2.2.22binphp.ini”
“xxwampbinphpphp5.3.13php.ini”
“xxwampbinphpphp5.3.13phpForApache.ini”
“c:windowsphp.ini”

实际上由于 windows 不像 linux 可以有软连接指向同一个 php.ini,所以会存在多个 php.ini 导致不同的情景下运行会调用不同的 php.ini
比如我们在使用 wamp 托盘菜单里更改的 php.ini 实际上改的是 apachebin 下的 php.ini 而通过 cli 下调用的实际上是 phpbin 的 php.ini
这样的话即使我们在 wamp 中开启了 openssl,对于命令行下实际上也是没有开启,所以会报上述错误。

通过在 phpinfo () 中和 cli 下 php -i 查看 Loaded Configuration File 可以看到载入的是不同的 ini

更详细的可参照:
http://forum.wampserver.com/read.php?2,45057,45079 推荐
http://serverfault.com/questions/408377/wamp-why-two-php-ini-files
http://stackoverflow.com/questions/7555750/configuration-file-php-ini-path

额,上面分析了一堆,,实际上解决也很简单。加上 - c 参数 指定一个 ini 即可

php -c “E:wampbinapacheApache2.2.17binphp.ini” artisan bundle:install bob

成功安装
laravel_openssl_6

坚持原创分享,您的支持将鼓励我继续创作!