遇到問題的起因是因?yàn)槲倚枰l(fā)送郵件,但是郵件需要通過ssl。
當(dāng)我運(yùn)行的時候,laravel提示
[Swift_TransportException]
Connection could not be established with host smtp.exmail.qq.com [Unable to
find the socket transport "ssl" - did you forget to enable it when you con
figured PHP? #0]
這個問題就是php缺少的ssl庫沒辦法使用,解決的方法其實(shí)也不難。
最簡單的就是直接重新編譯php7,加上--enable-openssl參數(shù),但是不想重新編譯怎么辦,很簡單,我們只要拿到openssl.so的擴(kuò)展就好了。
- 首先從php7的官網(wǎng)下載php7
- 解壓并進(jìn)入文件夾
cd php7.0/ext/openssl - 運(yùn)行
phpize,如果命令無效,請用whereis phpize找到phpize的地址,用絕對地址運(yùn)行即可 - 運(yùn)行
./configure --with-openssl --with-php-config=/path/to/php-config這里請注意后面的--with-php-config參數(shù),你需要找到自己環(huán)境的php-config,同理,用whereis php-config查找一下。 - 運(yùn)行
make && make install,會顯示編譯出來后so文件放置的地方,直接進(jìn)入這個目錄。 - 運(yùn)行
cp openssl.so /path/to/phpext。這里你需要把文件復(fù)制到php的擴(kuò)展目錄里面,擴(kuò)展目錄在php.ini里面的extension_dir這個設(shè)置對應(yīng)的地址,假設(shè)你甚至不知道php.ini在哪里,你可以直接運(yùn)行php -i,在load ini那一項(xiàng),你就可以看到php.ini的地址。
至此,此問題完全解決。注意,其他版本的php也是同理,沒有必要只為了一個庫就重新編譯整個php。