升級到php 5.6(mac os x sierra)之後,我無法在本地測試環境中發送郵件。Symfony swiftmailer通過本地主機上的smtp gmail openssl錯誤
但令人傷心的是,通過在Symfony中的swiftmailer發送郵件不起作用。
這是錯誤:
[Symfony\Component\Debug\Exception\ContextErrorException]
Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
我發現了什麼至今:
由於PHP 5.6的OpenSSL似乎要求:http://php.net/manual/en/migration56.openssl.php
因爲更新後,我是不能夠使用的file_get_contents根本沒有這個錯誤,所以我所做的就是指定一個 openssl.cafile = 在我的php ini中,就像我在這裏找到的那樣:https://andrewyager.com/2016/10/04/php-on-macos-sierra-cant-access-ssl-data/
現在file_get_contents再次工作,但我無法通過smtp發送swiftmailer郵件。
這是我swiftmailer配置:
swiftmailer:
transport: "smtp"
host: "smtp.gmail.com"
username: "%mailer_user%"
password: "%mailer_password%"
auth_mode: login
port: 587
encryption: tls
delivery_address: "%mailer_delivery_address%"
spool: { type: memory }
我必須提供其他任何地方的symfony/swiftmailer我的憑證檔案錯誤?
我已經找到了這個:PHP - Swiftmailer using STARTTLS and self signed certificates 但是對於這樣的硬編碼解決方案不是一種選擇,因爲我想部署代碼庫而不必每次都改變它。我更喜歡在系統級別解決這個問題。
請註明您使用的OpenSSL版本。還請顯示設置OpenSSL使用的上下文的代碼。它應該類似於OpenSSL wiki上的[SSL/TLS Client](https://wiki.openssl.org/index.php/SSL/TLS_Client)。 – jww