通過CGI實現在Html頁面上執行shell命令


在mac上配置cgi(不用系統自帶的apache cgi.)

安裝cgi
1. brew update

2. brew install httpd24

  

安裝完后,會有如下提示

DocumentRoot is /usr/local/var/www.

The default ports have been set in /usr/local/etc/httpd/httpd.conf to 8080 and in
/usr/local/etc/httpd/extra/httpd-ssl.conf to 8443 so that httpd can run without sudo.

To have launchd start httpd now and restart at login:
brew services start httpd
Or, if you don't want/need a background service you can just run:
apachectl start


打開apache
3. brew services start httpd

  

在瀏覽器輸入
localhost:8080

  

如果得到 It’works,說明apache運行成功

brew安裝的apache默認端口是8080,mac自帶的apache默認端口是80

 

修改httpd.conf文件
添加兩行:

LoadModule cgi_module lib/httpd/modules/mod_cgi.so
LoadModule cgid_module lib/httpd/modules/mod_cgid.so

修改 <Directory "/usr/local/var/www/cgi-bin">標簽里的內容如下,ExecCGI 表示在cgi-bin目錄下執行cgi腳本,所有的cgi腳本都需要放到改目錄下。
<Directory "/usr/local/var/www/cgi-bin">
    Options ExecCGI  
    AllowOverride None  
    Order deny,allow  
    Allow from all
</Directory>

取消下面三行的注釋:
AddHandler cgi-script .cgi 
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

在AddHandler cgi-script .cgi 后面添加支持的cgi腳本格式, 比如.sh .pl. 由於我這里用shell腳本,所有修改為
AddHandler cgi-script .cgi .sh

 

修改權限
chmod +x /usr/local/var/www
chmod +x /usr/local/var/www/cgi-bin
重啟服務器
brew services restart httpd

  

在 /usr/local/var/www/cgi-bin 下放置測試腳本delete.sh
#!/bin/bash
echo "Content-type: text/html"
echo ""

# ok, we've sent the header, now send some content
rm -f $QUERY_STRING
if [ "$?" -eq 0 ]; then
  echo "Deleted!"
else
  echo "Delete failed!"
fi

  需要給delete.sh 權限

chmod +x /usr/local/var/www/cgi-bin/delete.sh
 

  在瀏覽器中打開

localhost:8080/cgi-bin/delete.sh?1.png

  或者用curl

curl "localhost:8080/cgi-bin/delete.sh?1.png"

  

 

 





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM