NaviServer 本身支援 ASP/PHP 類似的寫法,可以內嵌 Tcl 程式碼到網頁中,
稱為 NaviServer Dynamic Pages (ADPs),其副檔名為 adp,可以參考下列的網頁:
NaviServer ADP Development
主要的語法有以下三種,第一種為使用 script 標籤:
<script language="tcl" runat="server" stream="on">
...
</script>
第二種則是短標籤:
<% ... %>
第三種則是印出變數的短標籤:
<%= ... %>
NaviServer 已經內建 nscgi 模組。檢查 nsd-config.tcl(或者是你使用的設定檔),確定有載入模組:
ns_section ns/server/default/modules {
if {$nscpport ne ""} {ns_param nscp nscp}
ns_param nslog nslog
ns_param nscgi nscgi
ns_param nsperm nsperm
ns_param revproxy tcl
}
如果想要使用以前使用 Tcl 寫的 CGI 程式、或者是要使用 NaviServer 練習撰寫 CGI 程式, 只要注意 NaviServer cgi-bin 設定的位置正確的放置檔案,以及正確的加入 Tcl interpreter 的設定即可。 接下來修改 nsd-config.tcl:
ns_section ns/server/default/module/nscgi {
ns_param map "GET /cgi-bin $home/cgi-bin"
ns_param map "POST /cgi-bin $home/cgi-bin"
ns_param interps CGIinterps
#ns_param allowstaticresources true ;# default false; serve static resources from cgi directories
}
ns_section ns/interps/CGIinterps {
ns_param .pl "/usr/bin/perl"
ns_param .tcl "/usr/bin/tclsh"
ns_param .sh "/bin/bash"
}
PHP 目前在網頁伺服器主要有三種執行的方式,使用 CGI,使用 FastCGI 以及內嵌到網頁伺服器裡。 如果使用 PHP 8.x,php cgi 程式 (php-cgi) 在 openSUSE Tumbleweed 的套件為 php8-fastcgi。 如果想透過 NaviServer 使用 CGI 的方式執行 PHP 是可行的,只要修改 nsd-config.tcl 加入 PHP interpreter 的設定:
ns_section ns/interps/CGIinterps {
ns_param .pl "/usr/bin/perl"
ns_param .php "/usr/bin/php-cgi"
ns_param .tcl "/usr/bin/tclsh"
ns_param .sh "/bin/bash"
}
然後寫一個測試程式:
<?php
phpinfo();
?>
沒有留言:
張貼留言