2013-07-12 106 views
0

我需要在PHP中運行一個c程序來建立套接字連接並從服務器取回結果。使用PHP執行C腳本

我已經寫了一個C程序來建立套接字連接,並且服務器接收到請求。

如何將C程序轉換爲.dll文件以用作PHP擴展?

+0

您是否嘗試過使用netcat? –

回答

0

使用套接字,您不能直接運行任何C應用程序。您需要調用該可執行文件來運行。

我的想法是,您可以在遠程運行另一個客戶端應用程序,並將一些數據發送到套接字,並在遠程客戶端將收到基於它可以運行他的應用程序的消息。

0

方法1:
您可以接收從客戶端發送的文件並將其保存到磁盤。
然後,您可以使用系統來編譯收到的文件。
最後一步,您運行它,再次使用系統

但我不建議你這樣做,因爲它可能是危險的,你永遠不知道代碼的作用。它可能會刪除磁盤中的所有文件。更重要的是,代碼依賴的庫可能沒有安裝。

方法2:
使用加載庫:
1.所有發送給服務器的代碼是實現一個通用接口
2.預編譯的代碼加載庫
2.服務器保存代碼到磁盤
3.服務器加載庫並調用通用接口
關於加載庫的更多信息,請查看it出。

+0

感謝您的回覆 – KumarA

0

我們不能直接用PHP運行C程序,因爲要運行C腳本,沒有帶有任何LAMPP,XAMPP,WAMP的編譯器。如果我們需要運行任何C腳本,請使用帶有ZEND引擎標準的C代碼創建PHP擴展(檢查語法以從PHP接收C語言中的參數)。

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ls|b", &intNumber, &strVal, &return_long) == FAILURE) { 
     RETURN_NULL(); 
    } 

WINDOWS:

請參閱此鏈接創建與C腳本PHP擴展: http://www.dreamincode.net/forums/topic/244215-introduction-to-creating-a-php-extension-for-windows/ 移動擴展文件到/轉/文件夾,並在php.ini文件

添加擴展名

LINUX:

http://linux.ferhatbingol.com/2013/06/06/how-to-create-php-extensions/ 在Linux,默認情況下.so文件將移至/usr/lib中/ PHP5/ XXXXXXXX/extension.so ,在您的PHP.ini文件中指定此擴展路徑

然後重新啓動Apache服務器,最後我們的PHP擴展將正常工作。