Apache 通過CGI執行指令碼

2022-06-22 11:33:10 字數 2161 閱讀 5204

1.配置伺服器,開啟注釋

告訴伺服器cgi和pl字尾的檔案都是cgi指令碼

編寫python指令碼,並放入/var/www/cgi-bin/目錄下

#

!/usr/bin/python

#-*- coding: utf-8 -*-

print

'content-type: text/plain

'print

'hello, world!

'

瀏覽器輸入: www.localhost.com/cgi-bin/wang.py

編寫shell指令碼,並放入/var/www/cgi-bin/目錄下

#!/bin/sh

echo -e "

content-type: text/plain\n

"echo

"hello world!

"

瀏覽器輸入: www.localhost.com/cgi-bin/wang.sh

這樣直接通過url對使用者不友好,但給前端提供了介面,於是我又寫了個html檔案,放在www/html資料夾中,名為test.html

伺服器通常會有乙個www/cgi-bin的目錄,我在這裡放乙個shell指令碼,名為test2

#!/bin/sh

alias urldecode='

sed "s@+@ @g;s@%@\\\\x@g" | xargs -0 printf "%b"

'echo -e "

content-type: text/plain\n

"decoded_str=`echo $query_string |urldecode`

echo `$decoded_str`

一共就5句:

第1句表示是shell指令碼,實際上不加也可以,因為shell是預設的指令碼。

第2句我網上抄的,具體原理也不懂,作用是解碼url, 當url中有空格時,從客戶端傳過來會變成%20, 20是空格的16進製制ascii碼。

第3句是必須的,否則在客戶端呼叫時就出錯,是http協議規定的。

第4句就是將url解碼

第5句是執行命令並返回給客戶端

然後在瀏覽器中輸入url:127.0.0.1/cgi-bin/test2?pwd

結果為 /var/www/cgi-bin

兩個js函式,httpget是網上抄的,f是點選按鈕的**函式,主要兩句,第1句獲取使用者輸入並加上字首組成url,第2句呼叫httpget函式並將返回輸出。

使用時,瀏覽器中輸入127.0.0.1/test.html,效果如圖

apache 編寫cgi指令碼

1 裝載相關模組 可寫在 etc httpd conf httpd.conf 裡也可寫在虛擬主機配置檔案裡 loadmodulecgi modulemodules mod cgi.so cgi相關模組 loadmodulealias modulemodules mod alias.so 別名相關模組...

Linux計畫任務通過執行指令碼

linux計畫任務通過執行指令碼備份xampp安裝的mysql資料庫 鄧強 1.首先編輯計畫任務 vim etc crontab 加入以下 mysqldump mysqlbases to this file 0 2 root usr bin mysqlbak 這是設定每天2點定時執行 mysqlba...

設定Apache執行CGI程式

設定apache執行cgi程式 訪問 時訪問的是 另外目錄下的 cgi 程式。如此設定後,cgi bin 目錄下的任何檔案都以 cgi 程式執行。設定 cgi bin 目錄下的檔案用 cgi 執行。設定 cgi bin 之外目錄下的檔案中可以執行 cgi 程式,在 options 後加上 execc...