Windows環境下安裝PHP 8.1.3與Composer

今天來介紹安裝 PHP 8.1.3 於 windows 環境下.

首先至 PHP Windows版本下載的連結:

https://windows.php.net/download

可以安裝 VS16 x64 Non Thread Safe (2022-Feb-16 08:50:36) 這個版本即可, 至於 Thread Safe 與 Non Thread Safe 有什麼不同可以參考: https://stackoverflow.com/questions/1623914/what-is-thread-safe-or-non-thread-safe-in-php, 原則上是與 Apache  Web Server 應用時會需要 Thread Safe 版本, 其他不需要.

解開後放在自己想放的資料夾中, 例如 c:\php (預設也會是這個, 若不是也沒關係), 例如 c:\tools\php813, 然後將這個路徑加入環境變數 PATH 中, 供執行時, 可以執行 php.exe 這個執行命令.

在 console 下, 可以利用以下指令:

C:\Users\tim> PATH %PATH%;C:\tools\php813

接下來的步驟很重要, 先將目錄下的 php.ini-production 或 php.ini-development 複製一份為 php.ini , 調整兩個重要的內容:

  • extension_dir = “ext”
  • extension=openssl

這兩行前面的註解 “;” (分號) 要拿掉.

以上都完成後, 你就可以在 console 下執行 php -v 來看 php 是否可執行, 與版本資訊:

C:\Users\tim>php -v
PHP 8.1.3 (cli) (built: Feb 16 2022 08:20:53) (NTS Visual C++ 2019 x64)
Copyright (c) The PHP Group
Zend Engine v4.1.3, Copyright (c) Zend Technologies

接下來就依這裡的指令來執行手動安裝:

https://getcomposer.org/download/

上面有懶人包的 installer, 不過這裡介紹手動安裝, 一共4行指令:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

分別說明如下:

php -r 是執行 php 指令

  • 第一行的 copy 是透過對應網址下載一支 composer-setup.php 檔案
  • 第二行是進行 hash_file 檢查檔案是否被修改過, 也就是官方原始發行的檔案, 若 hash_file 檢查失敗, 會利用 unlink 來刪除檔案
  • 第三行執行該下載的 composer-setup.php 安裝檔來安裝. (此時會生成一個 composer.phar 檔)
  • 第四行則是將下載的安裝檔 composer-setup.php 刪除

這裡要介紹的是, 先想好自己要放 composer 的路徑, 例如 c:\tools\composer

然後到對應的目錄下執行上面4行安裝指令:

C:\tools\composer>php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

C:\tools\composer>php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Installer verified

C:\tools\composer>php composer-setup.php
All settings correct for using Composer
Downloading...

Composer (version 2.2.7) successfully installed to: C:\tools\composer\composer.phar
Use it: php composer.phar


C:\tools\composer>php -r "unlink('composer-setup.php');"

C:\tools\composer>

若是前面的 extension=openssl 沒有拿掉註解會有以下錯誤訊息:

C:\tools\composer>php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
PHP Warning:  copy(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in Command line code on line 1
PHP Warning:  copy(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in Command line code on line 1
PHP Warning:  copy(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in Command line code on line 1
PHP Warning:  copy(https://getcomposer.org/installer): Failed to open stream: No such file or directory in Command line code on line 1

若是前面的 extension_dir = “ext” 沒有拿掉註解會有以下錯誤訊息:

C:\tools\composer>php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
PHP Warning:  PHP Startup: Unable to load dynamic library 'openssl' (tried: C:\php\ext\openssl (?曆??唳?摰?璅∠???, C:\php\ext\php_openssl.dll (?曆??唳?摰? 璅∠???) in Unknown on line 0

但若你是用 c:\php 為目錄的話, 就不會有這個問題, 在非 c:\php 下, 如前述的例子 c:\tools\php813 , 則在 php.ini 中將 extension_dir = “ext” 註解拿掉就沒問題了.

接下來就是將這個安裝好 composer.phar 檔案的目錄中, 建立一個 batch 檔: composer.bat, 參考這個連結:

https://getcomposer.org/doc/00-intro.md#manual-installation

C:\tools\composer\> echo @php "%~dp0composer.phar" %*>composer.bat

上面的 @ 是在指行 php composer.phar 指不要輸出到 stdout, 而 %~dp0 則是 bat 檔所在的目錄變數, 所以實際執行會是:

php c:\tools\composer\composer.phar %* 這裡的 %* 則是所有使用 composer.bat 後的附加參數. 詳情可以參考這裡:

並將這個目錄 c:\tools\composer 也加入路徑:

C:\tools\composer> PATH %PATH%;C:\tools\composer

這樣就可以檢查 composer.bat 是否可以正常執行了, 例如:

C:\Users\tim>composer -V
Composer version 2.2.7 2022-02-25 11:12:27

這樣就安裝完成囉!

PS:

有兩個模式是他的安裝懶人包也會啟用的 php.ini 設定, 我們也可以將對應的註解拿掉:

  • extension=curl
  • extension=mbstring

 

 

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *