簡體   English   中英

如何從Perl或PHP(在Linux上使用Apache的CGI-BIN)調用c ++二進制文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM