GB | BIG5
|
| 首頁 > 編程技術 > Perl > 正文 |
 |
| Perl CGI 程式寫作常問問題集(3)CGI 與 WWW Server |
| 不詳 (2001-05-15 05:15:00) |
3.0 - CGI 與 WWW Server
--------------------------------------------------------------------------------
Q3.1: 我的 Perl CGI 程式要放在哪裡執行?cgi-bin 這個目錄是做甚麼用的?
server 通常是設定成去執行放在 ``cgi-bin'' 目錄底下的 CGI 程式。不過, server 管理者同時也可以在設定檔中設定 aliases,讓所有含某些副檔名(如 .cgi、.pl)的 scripts 都能執行*。
【譯者】設定 CGI aliases 和副檔名固然很方便,但 server 管理者須注意到相 關的安全問題。
--------------------------------------------------------------------------------
Q3.2: 什麼是檔案使用權限?怎樣改?
檔案權限是根據使用者識別代號(又稱 uid),以及他們所屬的團體來決定是否賦 與使用者讀、寫,和執行某檔案的權利。您可使用 chmod 這個指令去修改檔案的 使用權限。例如:
% ls -ls form.cgi
1 -rwx------ 1 shishir 974 Oct 31 22:15 form.cgi*
此一檔案的權限為 0700(八進制),意味著沒有人(檔案所有人除外)能夠讀取、 寫進,或執行這個檔案。我們可以用 chmod 這個指令去修改它的權 限:
% chmod 755 form.cgi
% ls -ls form.cgi
1 -rwxr-xr-x 1 shishir 974 Oct 31 22:15 form.cgi*
這樣一來,權限就變了。現在和 ``shishir'' 在同一個團體的使用者,還有其他 任何的使用者都有權利去讀取和執行這個檔案了。
如欲知 chmod 指令各八進制數碼所代表的含意,請參閱 chmod manpages的說明。
--------------------------------------------------------------------------------
Q3.3: Perl 應該安裝在哪裡才可以執行它?
Perl 可以安裝在系統上任何一個角落!您唯一要注意的是 server 不能在chroot 的環境下跑,否則它便無法跑 perl 解譯器。換言之,系統管理者可以把根目錄 改變,讓 ``/'' 指到另一個目錄,而不是實際真正的根目錄(``/'')。
--------------------------------------------------------------------------------
Q3.4: 我為什麼一直得到 ``Server: Error 500'' 的訊息?
以下幾種情形會觸發這個錯誤訊息:
如果 script 開頭的地方沒有 ``#!/usr/local/bin/perl'' 這個指到 Perl 解譯器的標頭,或者是指到解譯器(或 library 檔)的路徑錯誤。
如果 script 輸出的第一行是一個不正確的標頭(即 ``Content-Type: text/html'' ),或者是該標頭後面沒有跟著一個空行。
如果您的 script 有句法上的錯誤。您的 scripts 都應在指令列先跑跑看才 是。
--------------------------------------------------------------------------------
Q3.5: 我試著打開一個檔案,想把資料儲存在裡頭,但是 open() 的指令失敗了。到底是怎麼搞的?
一般說來,HTTP server 是以 ``nobody''、``www'',或其他這類權限低的使用 者的身份來跑的。因為這個緣故,您打算在其中制造新檔案的目錄,對 server 跑的 使用者 ID 必須要是可寫(writable)才行。
為了確定起見,您每次都應該先檢查 open 這個指令送回的結束狀態(return status),看看 open 有沒有成功。
open(FILE, "/abc/data.txt")
|| error("Could not open file /abc/data.txt");
.
.
.
sub error {
my($message) = @_;
print <Content-type: text/html
Status: 500 CGI Error
CGI Error
Oops! Error
$message
End_of_Error
}
(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
Perl CGI 程式寫作常問問題集(4)安全 (2001-05-15 07:15:00) Perl CGI 程式寫作常問問題集(4)程式設計疑難雜症 (2001-05-15 06:15:01) Perl CGI 程式寫作常問問題集(3)CGI 與 WWW Server (2001-05-15 05:15:00) Perl CGI 程式寫作常問問題集(2) Modules (模組) (2001-05-15 04:15:00) Perl CGI 程式寫作常問問題集(1)入門簡介 (2001-05-15 03:15:01)
|
|
|
|
 |
★ 樊強制作 歡迎分享 ★ |