![](/img/trans.png)
[英]How to set server to run the perl script in “root-directory/sub-directory/cgi-bin” from “root-directory/cgi-bin” in Ubuntu 10.04?
[英]How to call c++ binary from Perl or PHP (CGI-BIN using Apache on Linux )?
我有一個用c ++編寫的網站cgi-bin程序。
不幸的是,我朋友網站的網站提供商僅允許Perl或PHP cgi-bin腳本。
有沒有一種簡單的方法來簡單地擁有一個很小的Perl或PHP包裝器,該包裝器僅調用c ++編譯的二進制文件?
C ++程序仍然能夠從stdin中讀取POST命令,還是必須由Perl或PHP讀取然后轉發。
您可以使用Perl的反引號或“系統”命令來運行Shell命令。 另外,perl有很多“內聯”類,使您可以用其他語言編寫要在perl中調用的代碼,包括一個用於C ++的代碼 。 如果找不到有用的東西,也許可以使用該軟件包制作自己的包裝器。
您可以使用PHP的system()函數執行一個shell命令,該命令可以用來啟動另一個程序。 然后,該程序的STDOUT將與php的stdout放在同一位置(到HTTP連接)。 您可能需要做一些弄亂才能使stdin從get / post / etc中讀取。
但是,很可能網站提供商已禁用您以這種方式執行程序的功能。 這可能會帶來安全風險,如果它們專門只允許使用php和perl,則它們可能會專門禁用盡可能多的運行非php / perl的方法。 因此,簡短的答案是您可能不走運。
有關解決我問題的一些PHP代碼,請參閱我的Awstats包裝器博客文章。 我的方法是構造一個命令行,該命令行具有從CGI查詢參數設置的正確環境變量,然后對結果輸出進行替換,以便所有返回CGI的鏈接都將轉至我的包裝器腳本。 由於PHP提供了自己的標頭,因此我也對CGI的標頭輸出進行了修改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.