今天在学习laravel框架时,通过命令行安装bundle时出现错误,经过三个小时的搜索调试,解决问题,记录如下。
报错截图:
出现这个的原因是PHP不支持SSL,可能是编译的时候就不支持,也可能是在配置文件中没有加载opensll扩展。
解决方案:
Windows下,
首先查找php的文件夹中的ext目录是否含有php_openssl.dll,如果存在的话
找到加载的的php.ini查找extension=php_openssl.dll,去除最前面的;号,重启服务。
如果不存在这个dll,可参照http://blog.yogo.tw/2009/08/phpopenssl.html
PS:
若改完php.ini重启web server却出現找不到”php_openssl.dll”的错误,将”php_openssl.dll”及在C:php5下 的libeay32.dll、ssleay32.dll,3个文件到”C:WINDOWSSystem32”下,重启应该可以解决问题。
如果你安裝的web server是含 openssl 的 apache 的話,
因为根据windows 的设计, 他会先查找 (如下英文字) apache/bin,所以 php 内置的就永远到不了了,请把php_openssl.dll、libeay32.dll、ssleay32.dll覆盖到 apache/bin 那才是程序执行的地方。When any application attempts to use a dll file in windows, the system searches for this file using the following order:
- The directory from which the application loaded.
- The windowssystem32 directory.
- The windowssystem directory.
- The windows directory.
- The current directory.
- The directories that are listed in the PATH environment variable.
Linux下,重新编译php,编译时加上参数–enable-ssl(具体参看configure的help)。
开启后用phpinfo()查询如果出现下图就是成功加载了。
以上是解决了这篇博文标题描述的问题 针对大多数的情况应该可以解决,比如搭建smtp等等。
但是针对 laravel 命令行下无法安装 实际又是另一个问题。请参考 laravel命令行下无法安装bundle