跳到主要內容

解決無法在Windows 使用 composer / git 下載與安裝的問題

出現了幾個詭異的問題.  首先是從github clone 或者從composer 下載檔案時 :

Permission denied (publickey)


解決辦法如下:
1.  ssh-keygen -t rsa -b 4096 -C "github email account"
2.  cd c:\users\你的WINDOWS_USER\.ssh
3.  clip < id_rsa.pub

登入到github

1.  到 Account -> Settings -> New SSH Key
2.  建立一個SSH key
3.  將之前複製的id_rsa.pub 內容貼上, 然後Save
4.  確認是否通過認證:  ssh -T git@github.com


然後是第二個問題, composer 無法下載檔案, 現實的錯誤如下:

SSL certificate problem: self signed certificate in certificate chain


解決的辦法如下:

1.
git config --global http.sslVerify false
2.

或者自己將這段放進 composer.bat 檔裡以避免偶爾會失效, 每次執行 php composer.phar 之前設定 git config --global http.sslVerify false

但是這辦法太麻煩了.


3.

直接在 .gitconfig 裡設定:

尋找 .gitconfig 在哪, 可以使用這個指令:  git config --list --show-origin

之後直接將 以下這段貼進 config 或者 .gitconfig (通常在 c:\users\你的WINDOWS_USER_NAME 裡.  有多少個config 就全部加入) 就行了:
[http]
sslVerify = false

4.

因為我有使用WinNMP, 因此每次切換不同的PHP 時, WinNMP 內建的 composer.bat (在YOUR_WinNMP_PATH\bin) 總會被複寫.

因此我將 WinNMP 的 composer.bat 複製, 並換了一個地方, 比方說 c:\mybat, 將檔案複製到 c:\mybat 裡, 然後加入以下這段在@ECHO off 下面:
git config --global http.sslVerify 
之後再將整個PHP 路徑 (比如:  c:\winnmp\bin\PHP\64bit-php-7.2\php.exe) 換成 php 即可.

之後再將composer.bat 改名成 任何你喜歡的.

然後在 This PC -> (right click) Properties -> Advanced system settings -> Environment Variables, 在PATH 裡加入了我寫好的composer.bat 的路徑, 如此一來每次在dos 呼叫 composer 時就會轉而執行我的composer.bat

留言

這個網誌中的熱門文章

解決Apache 2.2, 關於HTTPS 之下使用PROXY 面對的 proxy server received an invalid response from an upstream server 以及 proxy: pass request body failed 的問題

修改以下 (proxy 以及 從proxy 接收的server): httpd.conf: ----------- 在 Include conf.d/*.conf 的前面加入以下: LimitRequestBody 2147483647  #2Gb Timeout 24000 ProxyTimeout 24000 ProxyBadHeader Ignore ssl.conf ---------- 在各個virtualhost 裡加入以下:     SSLEngine on     SSLProxyEngine on     SSLProxyVerify none     SSLProxyCheckPeerCN off     #SSLProxyCheckPeerName off     SSLProxyProtocol +SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2 以下這個只在proxy server 裡的virtualhost 設定     ProxyPass / https://REMOTE_HOST:443/ retry=1 acquire=3000 timeout=3600 Keepalive=On 

解決CentOS 8 的 failed to set locale defaulting to c.utf-8 的問題

這原因是沒有安裝好支援的語言與字型, 特別是UTF8 並沒有被安裝到 因此使用以下指令確認 localedef -i en_US -f UTF-8 en_US.UTF-8 假如出現 "[error] character map file `UTF-8' not found: No such file or directory" 或者 [error] default character map file 'ANSI_X3.4-1968' not found : No such file or directory 那就安裝UTF8 吧 yum whatprovides "*/UTF-8.gz" 如果找到的話 "UTF-8.gz" 的話 yum install "*/UTF-8.gz" -y 再執行一次: localedef -i en_US -f UTF-8 en_US.UTF-8