Composer常見問題
安裝了Composer后,運行composer --version
,查看Composer的版本號。如果出現下面的提示,那么軟件安裝成功。
Composer version 1.2.0 2016-07-19 01:28:52
若想給某個項目添加類似monolog的第三方庫,則按下面的步驟操作:
-
新建composer.json文件,添加內容:
{ "require": { "monolog/monolog": "1.20.0" }, "repositories": { "packagist": { "type": "composer", "url": "https://packagist.phpcomposer.com" // Mirror site in China. } } }
-
以命令行方式打開項目的根目錄,輸入命令:
composer install
;
正常情況下,一切順利,執行完上述命令就能夠成功導入monolog庫到項目中。但是,現實與想象總是有段距離,上面只是走完了“長征”路程的一半,還有“雪山”要翻、“草地”要過呢!
執行完命令:composer install
后,並不會像期待那樣地導入依賴,而是拋出異常。
The openssl extension is required for SSL/TLS protection but is not available. If you can not enable the openssl exension, you can disable this error, at your own risk, by setting the 'disable-tls' option to true.
這段異常日志的大致意思是,Composer采用SSL連接,需要外掛OpenSSL插件。
要消除這個異常,有兩種解決方式,一是放棄SSL連接、直接“裸奔”;二是啟用OpenSSL。
取消SSL連接的命令是composer config -g -- disable-tls true
。然而並沒有什么卵用,試過之后,又拋出了新的異常。
剩下來的方案就是嘗試啟用OpenSSL。安裝了PHP后,安裝目錄(類似C:\php-5.6.24)中包含兩個文件,一個是php.ini-development,另一個是php.ini-production,選擇將其中任意的一個文件重命名為php.ini,用作PHP的默認配置文件。通過修改配置文件來啟用OpenSSL插件。
編輯php.ini文件,首先,定位到:
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
extension_dir = "./"
; On windows:
extension_dir = "ext"
刪除extension_dir = "./"
和extension_dir = "ext"
前面的分號,取消注釋這兩行代碼,配置PHP插件目錄為./ext
。
然后,定位到:
...
;extension=php_mysqli.dll
;extension=php_oci8_12c.dll ; Use with Oracle Database 12c Instant Client
extension=php_openssl.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
...
刪除extension=php_openssl.dll
前面的分號,取消注釋,從而啟用OpenSSL插件。
注意:因為SSL連接需要認證,所以繼續下面的步驟之前,需要准備好CA證書(建議把證書保存到C:\php-5.6.24\verify
目錄中),可以從https://curl.haxx.se/docs/caextract.html處下載。
接下來,定位到
;openssl.cafile=
和上面一樣,刪去分號,取消注釋,設置CA證書為openssl.cafile= C:\php-5.6.24\verify\cacert.pem
。
最后, 重新在命令行窗口中打開項目的根目錄,執行命令:composer install
,等待幾分鍾后,就可以成功添加monolog依賴。