问题截图:
如果你有出现如上问题,请先参考博文 《开启 php 的 openssl 扩展》。
如果你使用的是 lamp 的套件,比如 wamp 或者 xampp。当你开启 openssl,phpinfo 中也显示已经载入 openssl 模块,但是上述代码依然无法运行。
经过排查,原因应该是出在套件对 php.ini 的加载上,也就是你更改的 php.ini 和你命令行下使用的 php.ini 不是同一个。
这里以我使用的 wamp 举例:
windows 平台,命令行下输入 php -i find /i "openssl"
我们看到实际是没有开启的。
输入 php --ini
显示载入的是 php 目录下的 ini
而我们在网址中通过访问 phpinfo () 得到的是
实际是 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
成功安装