2010-08-27 81 views
0

我可以訪問共享的Web主機。 在那裏安裝的網站使用exec()。大約4個月前,該功能已啓用,但現在他們已將其放在disable_functions列表中。他們把exec,passthrushell_exec放在那個列表中,但是他們忘了把system :)這讓我覺得服務器管理員並不是很清楚他在做什麼。無論如何,他們現在說,這些功能應該永遠不會啓用,他們不會重新啓用它們。cgi-bin問題

安裝的網站使用exec()啓動一些PHP腳本,將做一些後臺工作。現在我正在查看是否有任何其他「合法」方式在後臺啓動這些php腳本(我預計system()可以工作,但也許他們會在將來也禁用它)。 現在我的簡單問題: 在perdefined文件結構中,我看到一個cgi-bin文件夾。它的用途是什麼?從我在網上閱讀的內容來看,它被用來在通過瀏覽器訪問時生成「動態」頁面,但服務器已經安裝了PHP,所以我沒有看到它的用途。

+0

你可以使用perl的系統調用'system(「command」);'非常類似於php,除非他們禁用cgi/perl – Prix 2010-08-27 20:12:25

回答

1

/cgi-bin/是應放置CGI script的目錄。
您可以使用CGI解決PHP中對exec的限制。

創建一個與內容命名somefile.sh文件:

#!/bin/sh 
printf "Content-Type: text/plain\n\n" 
#your code here 

這隻會工作,如果/ bin/sh的實際存在,並且是可執行文件(如果你在chroot是不是沒有如/ bin/sh的)

有足夠的方法來執行命令。如果他們禁用CGI,則可以繼續使用SSI

+0

現在我得到一個「內部服務器錯誤」。 我做了sh.sh,將權限修改爲任何人都可以執行的內容 '#!/ bin/bash echo「dsfsdfsdf」' 通過http://site.com/cgi-bin/sh.sh訪問它 – Quamis 2010-08-27 19:56:03

+0

我忘了CGI腳本需要發送Content-Type標頭。查看更新的帖子。 – Lekensteyn 2010-08-27 20:09:25

+0

thx,它工作:) – Quamis 2010-08-27 20:24:09