在「用 Plack 跑 CGI」提到用 Plack 跑 CGI,目的是把 PHP 寫的 Adminer (一個取代 phpMyAdmin 的工具) 跑起來。
文章裡提到 PHP 沒辦法以 CGI mode 執行,主要有兩個原因。一個是 PHP 本身有安全機制,php-cgi
必須在有 REDIRECT_STATUS
這個環境變數下才能執行,另外一個是 php-cgi
需要用到 SCRIPT_FILENAME
這個非 CGI/1.1 標準 (RFC 3875 - The Common Gateway Interface (CGI) Version 1.1) 的環境變數。
由於我只打算跑 Adminer,而 Adminer 的程式都放在同一個檔案裡,所以可以把這兩個環境變數設死惡搞:
env -i REDIRECT_STATUS= SCRIPT_FILENAME=/path/adminer.php /usr/local/bin/plackup -MPlack::App::CGIBin -e 'Plack::App::CGIBin->new(root => "/path")->to_app'
這樣就跑起來了...