直接在命令列執行 PHP 檔案時,系統會把它當成一般的腳本路徑,所以沒辦法直接解析網址後面的參數字串。當你輸入問號時,終端機通常會誤認那是檔案名稱的一部分,或者把 & 符號當成執行多個指令。
使用內建開發伺服器測試
如果你只是想測試 API 的執行結果,最簡單的方法是啟動 PHP 內建的伺服器。在專案目錄下輸入:
php -S localhost:8000
接著開啟瀏覽器或用 curl 存取 http://localhost:8000/api.php?action=decompose&text=%E7%97%9B 就能看到結果。這最貼近真實網頁環境。
在命令列模擬 GET 參數
如果一定要在純文字介面執行,可以使用 PHP 的 CGI 模式(如果環境有安裝的話),或是手動在執行前定義變數。你可以利用 php-cgi 指令並帶入參數字串:
php-cgi -f api.php action=decompose text=%E7%97%9B
如果只有一般的 php 指令,你必須在 PHP 程式碼中稍微修改,讓它能接收命令列參數。或者用一種比較取巧的方法,在執行時透過環境變數傳入:
QUERY_STRING="action=decompose&text=%E7%97%9B" php api.php
不過這需要你的 api.php 是透過讀取 $_SERVER[‘QUERY_STRING’] 來處理資料,而不是直接讀取 $_GET。
使用 CURL 模擬請求
這是在伺服器端測試 API 最常用的方式。不需要改動任何程式碼,只要你的網頁伺服器(如 Apache 或 Nginx)正在運作,直接輸入:
curl "http://127.0.0.1/api.php?action=decompose&text=%E7%97%9B"
記得網址要加上引號,避免 & 符號被終端機誤判。這樣就能直接在螢幕上看到 API 回傳的內容,也最符合你原本 log 紀錄的行為。