在 Synology NAS 中指定 PHP 的 curl.cainfo

前一陣子蔡 p 的網站流量爆量,不論怎麼 upgrade VPS 的規格依舊抵擋不住熱情的讀者 DDoS,xdite 有一系列的文章分享怎麼讓 wordpress-based blog 可以慢慢的擴充上去,其中我最有興趣的大概是 CloudFlair 的免費 CDN 服務。

前置步驟就不多說,要先把 domain 的 NS records 指向 CloudFlare 提供的位址,進行設定,然後 WordPress 中可以搭配官方提供的 plugin,或是其他第三方的 plugin,我個人比較偏好用官方版的。

但安裝了 plugin 後卻出現錯誤:

Unable to get domain via CloudFlare API – cURL request failed: SSL certificate problem: unable to get local issuer certificate
Could not find your domain via CloudFlare API, assuming your CloudFlare domain is: foo.bar

根據這篇的解釋,因為 PHP cURL 找不到 local issuer certificate,導致 SSL 憑證錯誤,所以必須手動設定它。

不知道為什麼 Synology NAS 在預設的狀態下,php 似乎沒有辦法找到憑證檔 cacert.pem,可以去下載最新的 cacert.pem,也可以使用系統原本提供的幾個:

/usr/syno/etc/cacert.pem
/usr/syno/aws/cacert.pem
/usr/syno/etc.defaults/cacert.pem

註:
DSM 4.3 的 php user-setting.ini 檔在 /usr/syno/etc/php/user-setting.ini

只要在 /etc/php/conf.d/user-settings.ini 裡加入

curl.cainfo = cacert.pem

再重新啟動 web server 即可。

2014.04.14 (補)