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

[Windows]查詢系統開機時間如linux的uptime指令

在 windows 下, 若要查詢開機時間(啟動時間)如 linux 下的 uptime, 可以使用以下方式:

  1. systeminfo – 這個裡面會有個 “系統開機時間: xxxx”, 不過因為要收集比較多資訊, 所以會需要等待一下
  2. net statistics workstation – 這裡面會有個 “統計資料-從 xxxx “, 就可以知道 boot time

還有 uptime 指令, 不過是需要安裝的, 可以參考這篇其他的查詢方式: https://stackoverflow.com/questions/11606774/how-to-get-the-system-uptime-in-windows

分類
好用軟體

好用的隱藏視窗執行console程式

一般在 windows 環境下, 起排程工作執行 console 應用程式或指令, 若是執行身份和目前登入的使用者身份一樣時, 就會出現一個 console 視窗, 為了要隱藏這個視窗, 有一種方式是使用不同的身份來執行該排程工作, 另一種方式可以應用這個小程式: Hidden Star

這個小程式可以讓執行的視窗不出現, 而且還有一個自帶的 UI 設定器, 方便使用者自行定義一個執令或是多個指令的執行, 而且不會出現干擾目前使用者的 console 視窗, 十分方便, 若有這樣需求的朋友們可以多加利用.

參考資料: http://www.howtogeek.com/howto/windows/hide-flashing-command-line-and-batch-file-windows-on-startup/

Hidden Star 網站: http://www.ntwind.com/software/hstart.html

分類
好用軟體

TCPView工具新增功能查詢流量

新版 Windows SystInternal 工具 TCPView (3.05) , 除了原來的 process 對應的 connection status 外, 右側多增加了 4個欄位的資訊, Sent Packets, Sent Bytes, Rcvd Packets, Rcvd Bytes.

畫面如下:

如此一來, 對於在查詢 prcoess / connection / 流量上, 就有更完整的資訊可以取得了.

官方網址: http://technet.microsoft.com/en-us/sysinternals/bb897437
官方下載: http://download.sysinternals.com/Files/TCPView.zip

iis7下的appcmd查詢reqeust

在沒有 appcmd 之前, 要像 apache 中的 server-status 中列出目前的 request url 只能利用 resource kit 的 request viewer, 不過在 iis7 中, 可以利用內建指令 appcmd 來查詢.

appcmd 有許多功能, 不過今天介紹的是查詢目前的 request, 先來看看說明文件:

http://technet.microsoft.com/zh-tw/library/cc772200%28v=ws.10%29.aspx

在 appcmd下, 有許多物件可供應用, 其中今天要介紹的就是 request, 不過可以操作的指令只有一個, 就是 list, 想查詢對該物件可用指令可以這樣下(以 site 為例):

>appcmd site /?
管理虛擬站台

APPCMD (command) SITE <identifier> <-parameter1:value1 …>

支援的命令:

list 列出虛擬站台
set 設定虛擬站台
add 新增虛擬站台
delete 刪除虛擬站台
start 啟動虛擬站台
stop 停止虛擬站台

(請使用 /? 取得每個命令的說明,例如 ‘appcmd.exe add site /?’。)

可以使用 list, set … 等多種操作指令, 而查詢目前的 request 則使用:

>appcmd list request
REQUEST “1400000080019834” (url:GET /xxx/xxxxx, time:1047344 msec, client:xxx.xxx.xxx.xxx, stage:SendResponse, module:IIS Web Core)
REQUEST “e20000438002e1fc” (url:GET /xxx/xxxxxx, time:71625 msec, client:xxx.xxx.xxx.xxx, stage:SendResponse, module:IIS Web Core)
….

可以很清楚地看到每個 request 的資訊, 包含 ip 及 url 及目前的狀態, 十分有用.

好用工具svchost viewer

偶然在 windows server 上會發現記憶體愈來愈少. 但是又是無法重新開機的狀況, 利用 task manager 會發現有個吃記憶體的怪獸, svchost.exe

這個 svchost.exe 望文生義, 就是個 host 服務的程式, 所以本身並無特別的執行項目, 而必須看他 host 什麼樣的服務, 這裡有個工具, svchost viewer: http://www.codeplex.com/svchostviewer , 就是專門用來看 svchost 的每個服務使用了多少記憶體及服務名稱, 方便在 svchost.exe 吃大量記憶體時, 查找原因所在.

這個 svchost viewer 是專查 svchost.exe 這個 process 的工具, 其實還有另一個功能更強大的工具, process explorer: http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx , 這個工具原本是在 sysinternal 這家公司, 早些年因為它的 utility 很豐富, 而且功能又都很強大(看它的名字叫 sysinternal 就能明白), 所以被微軟收購下來. 這個 process explorer 功能更多, 但若是拿來看 svchost 的 process 也能查找對應 svchost viewer 的功能, 但多更多其他的功能就是了.

這篇文章介紹了 svchost viewer 的介面及用法, 可以參考看看: 對一堆正在執行的 svchost.exe 好奇嗎?Svchost Viewer 可以給你答案 http://blog.joaoko.net/archives/1070

利用這樣的工具, 之前 svchost.exe 吃掉了 1g多的記憶體, 原來是 remote register 這個 service 用掉 1.06g 的記憶體, 真是太嚇人了, 停掉該服務後, 果然記憶體就還回來囉, 再次啟動這個服務, 又讓系統有充裕的記憶體可用了.

快速kill process的方式(Windows)

手邊剛好在處理一個大量 process 未結束於系統上的一個問題. 該 server 不知什麼原因, 在起動 cgi 程式時, 發生了這個現象, 偶發的不會自行結束, 於是在系統內就留下了許多該 process 的名稱. 利用 task manager 會看到大量的 process, 雖未佔用 cpu, 不過會吃掉一部分的記憶.

在不方便重開 server 的狀況下, 如何快速地將相同名稱的 process 一起刪除呢? 於是上網想查看看有沒有什麼方便的小工具可以做這件事. 結果很順利地找到系統內建的一個指令: taskkill

這個指令是給定要刪除的 pid 或 image name (就是執行檔名稱), 來進行 process kill 的動作. 簡單研究一下, 進行了測試, 效果相當不錯, 800多個 process 一下就刪完了, 使用的指令如下:

taskkill /IM mytest.exe /F

如此一來, 所有 mytest.exe 的 process 一口氣就被 kill 完成了.

另外有許多方便的參數可供使用, 詳情可以利用 taskkill /? 來取得說明, 列表如下:

TASKKILL [/S system [/U username [/P [password]]]]
{ [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]

Description:
This tool is used to terminate tasks by process id (PID) or image name.

Parameter List:
/S system Specifies the remote system to connect to.

/U [domain\]user Specifies the user context under which the
command should execute.

/P [password] Specifies the password for the given user
context. Prompts for input if omitted.

/FI filter Applies a filter to select a set of tasks.
Allows “*” to be used. ex. imagename eq acme*

/PID processid Specifies the PID of the process to be terminated.
Use TaskList to get the PID.

/IM imagename Specifies the image name of the process
to be terminated. Wildcard ‘*’ can be used
to specify all tasks or image names.

/T Terminates the specified process and any
child processes which were started by it.

/F Specifies to forcefully terminate the process(es).

/? Displays this help message.

Filters:
Filter Name Valid Operators Valid Value(s)
———– ————— ————————-
STATUS eq, ne RUNNING |
NOT RESPONDING | UNKNOWN
IMAGENAME eq, ne Image name
PID eq, ne, gt, lt, ge, le PID value
SESSION eq, ne, gt, lt, ge, le Session number.
CPUTIME eq, ne, gt, lt, ge, le CPU time in the format
of hh:mm:ss.
hh – hours,
mm – minutes, ss – seconds
MEMUSAGE eq, ne, gt, lt, ge, le Memory usage in KB
USERNAME eq, ne User name in [domain\]user
format
MODULES eq, ne DLL name
SERVICES eq, ne Service name
WINDOWTITLE eq, ne Window title

NOTE
—-
1) Wildcard ‘*’ for /IM switch is accepted only when a filter is applied.
2) Termination of remote processes will always be done forcefully (/F).
3) “WINDOWTITLE” and “STATUS” filters are not considered when a remote
machine is specified.

Examples:
TASKKILL /IM notepad.exe
TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
TASKKILL /F /IM cmd.exe /T
TASKKILL /F /FI “PID ge 1000” /FI “WINDOWTITLE ne untitle*”
TASKKILL /F /FI “USERNAME eq NT AUTHORITY\SYSTEM” /IM notepad.exe
TASKKILL /S system /U domain\username /FI “USERNAME ne NT*” /IM *
TASKKILL /S system /U username /P password /FI “IMAGENAME eq note*”

給大家參考!

參考資料: XP: kill a Windows process from the command line with taskkill

分類
系統技術

Windows DNS大量UDP Port問題

最近更新完一次 windows update, 發現有台 server 在重新開機後, 居然有一堆 udp port 開啟著, 利用 TCPView 來找出看是哪個 process 造成, 原來是 dns.exe (windows 內建的 dns service 程式), 起先以為是有什麼病毒或是問題, 便著手開始找資料, 遍尋不到問題及狀況所在. 一度以為是病毒引起, 也試著利用掃毒軟體來掃毒, 但都沒有找到病毒問題, 於是便暫時放棄.

今天索性再花些時間來找, 找到這篇相關文章, 發現也有不少人有一樣的問題:
http://www.eggheadcafe.com/software/aspnet/32625203/dnsexe-2500-open-ports-i.aspx

原來是一個更新到 dns.exe 的 patch 造成的, 可以參考這裡:
http://support.microsoft.com/kb/951746/en-us

看起來應該是沒什麼問題, 但後續要怎麼再更新或調整, 再觀察看微軟的後續更新囉!

[2008/08/25 23:01]
目前比較消極的解決方式可以參考:
http://support.microsoft.com/kb/956188/en-us

forfiles指令介紹

在 WINDOWS 下, 若是要將某些檔案做什麼處理的方式, 我通常使用 VBS 的 SCRIPT 來操作, 不過其實還有更方便簡捷的方法, 看到這篇文章 windows server下的檔案處理程式Forfiles , 原來其實在 windows 下還有個這麼方便的檔案列舉工具.

一般最常用的是刪除 log 檔案, 指定目錄, 並指令時間 (例如保留一週, 一週前的刪除), 就可以利用這個指令進行刪除:

forfiles /p c:\temp /s /m *.log /d -7 /c “cmd /c del @FILE”

或是列舉出指定目錄下的檔案(非目錄)的名稱列出:

forfiles /p c:\ /c “cmd /c if @isdir==FALSE echo @FILE”

請注意上面的 “FALSE” 要大寫!

再來看看微軟的官方說明: Forfiles

以下列出該指令的參數說明: (利用 forfiles /? 取得)

FORFILES [/P pathname] [/M searchmask] [/S]
[/C command] [/D [+ | -] {yyyy/MM/dd | dd}]

描述:
選取一個檔案 (或一組檔案),並在檔案上
執行命令。這對批次工作很有幫助。

參數清單:
/P pathname 表示要開始搜尋的路徑。
預設資料夾是目前的
目錄 (.)。

/M searchmask 根據 searchmask 搜尋檔案。
預設的 searchmask 是 ‘*’。

/S 指示 forfiles 遞迴搜尋
子目錄。例如 “DIR /S”。

windows vista sp1繁體中文出來囉

延遲已久的 vista sp1繁體中文版出來囉.

之前在 zdnet 上的消息, vista sp1 繁體中文版即將上市了, 參見: Vista SP1中文版五月釋出 相容性成賣點, 相較於英文版的 sp1, 的確讓大家等了好一陣子, 有在使用 vista 的用戶快去下載安裝囉!

官方連結如下:
KB936330:x64 系統的 Windows Vista Service Pack 1 All Language Standalone 版
KB936330:Windows Vista Service Pack 1 All Language Standalone 版 <-這是32bit版
Windows Vista Service Pack 1 All Language Standalone 版 CD ISO <-這是32bit版cd image
Windows Vista Service Pack 1 All Language Standalone 版 DVD ISO <-這是32和64bit的dvd image

快用看看吧!

另外順帶一提的, server 2008 的版本, 由於核心和 vista 是一樣的, 所以在發行時, 已是 with sp1 的狀況囉, 可以參考下面的截圖: