[華語, cmn-Hant-TW]
最近把一些原本跑 php 5.5 跟 apache 2.2 的網站更新到 php 5.6 + apache 2.4,遇到了一些狀況,首先是 composer 在執行的時候噴出這樣子的錯誤訊息:
The "https://packagist.org/packages.json" file could not be downloaded: SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed |
很明顯跟 openssl 有關,研究了一下發現 php 5.6 對這個要求比較嚴格些,首先要找到適合的 CA,然後在 php.ini 裡面把 openssl.cafile 指到那個 CA 的檔案就可以了,預設值是 /etc/ssl/cert.pem,不想改 php.ini 的話直接改 CA 檔名丟過去也可以,在 FreeBSD 下更省事的方式是用 ports 安裝 security/ca_root_nss 然後把 ETCSYMLINK 打開,裝好之後 composer 就不會再抱怨了
然後 laravel 的 mod_rewrite 失效,index.php/auth/login 沒辦法變成 /auth/login,首先要把 mod_rewrite 打開,而且 AllowOverride 要設成 All (預設是 none) 才會有效果,只開 mod_rewrite 是不夠的
再補充一點 composer (laravel 的 artisan 也是) 的 ansi color 效果基本上 unix-like os 都出得來,不過如果沒裝 posix 的話就得每次手動 –ansi 才會有顏色,為了方便起見 sysutils/php56-posix 還是乖乖裝一下比較好