2011-08-22 34 views
0

對不起,這是一個全新的問題,但有這個非常好的C庫可用,我想用它調用它的函數。不過,我有一個Linux服務器。這裏是規格:是否有可能從Linux服務器在PHP中調用C庫中的函數?

  • Apache的版本2.2.17
  • PHP版本5.2.17
  • MySQL版本56年1月5日 - 社區登錄
  • 建築x86_64的
  • Linux操作系統
  • 內核版本2.6.32-29.1.BHsmp

我能否將函數調用在PHP中的C庫(例如。使用php exec())如果C庫在linux服務器上?如果是這樣,庫需要使用gcc重新編譯?

非常感謝!

+0

可能是[從PHP調用C/C++庫函數](http://stackoverflow.com/questions/2479402/calling-c-c-library-function-from-php) – DaveRandom

+0

感謝戴夫。我查看了這個問題,並沒有指定客戶端的機器是運行linux還是windows服務器。在我的情況下,它是Linux,所以我認爲可能會有重新編譯庫在Linux下工作的另一個步驟。 – user784637

+0

您需要重新編譯庫(可能不考慮操作系統),以便直接從PHP訪問它。您需要重新格式化/重寫源代碼,以便將其編譯爲PHP擴展。如果你看看另一個問題上鍊接的Zend文檔,他們會告訴你如何做到這一點,但你需要知道一些C(顯然)。 – DaveRandom

回答

1

有了這些規格。你基本上有兩種選擇。

  1. 創建充當PHP擴展,使您能夠直接從PHP調用你的C函數包裝庫,例如mylib_awesome_func('hello');

  2. 創建一個命令行實用程序,它充當一個接口您C庫,然後用PHP中的exec()調用這個工具。

選擇一個可以被視爲更「乾淨」,但絕對難的,而方案二可能是很容易的,但在某些情況下,這取決於什麼樣的數據需要被傳輸/操縱回來是不可能的,並往返於圖書館。

+1

不要忘記信任問題:您是否相信圖書館可以在您的網絡服務器中運行?一個單獨的程序可以以較低的權限運行,但是新的程序比加載模塊更加昂貴。 –

相關問題