今天來介紹安裝 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 後的附加參數. 詳情可以參考這裡:
- https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/call
- https://inpega.blogspot.com/2012/07/cd-dp0.html
並將這個目錄 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