2012-12-29 35 views
5

我在Pthreads PHP extension有問題。我已經編譯了支持ZTS的PHP(--enable-maintainer-zts),並通過pecl安裝了pthread,並試圖手動編譯擴展。如何在Ubuntu中使用Pthreads PHP擴展

看來我實際上並不知道如何使用它。我認爲我可以像使用其他任何內置類一樣使用PHP中的Thread類,但沒有運氣,因爲PHP無法識別它。 POSIX函數似乎工作。

我使用的是Ubuntu 12.10 Server 64位mod_php 5.4.6。

+0

我研究了apache錯誤日誌,看來pthreads.so不能被加載,因爲有一個未知的符號:sapi_globals_id ...我也嘗試使用pthreads編譯php作爲靜態擴展,它沒有區別。 –

+0

該文件明確指出它是5.3。我們可以假設「5.6.4」的意思是「5.4.6」嗎?如果是的話,嘗試從5.4開始下降到5.3,然後看看它是否有效。如果確實如此,那麼您需要向維護人員提出有關5.4支持的問題。 – Charles

+0

是的,那是一個錯字,我正在運行PHP 5.4.6。目前pthreads已經啓動並正在運行。 –

回答

3

如果您不能訪問擴展類,那麼它不會被加載。

我想你打開了一個錯誤報告,我回應說你的配置行格式不正確。

要使用配置行是:

./configure --enable-pthreads --enable-maintainer-zts 

上面的命令將建立並行線程作爲一個DSO。

./configure --enable-pthreads=static --enable-maintainer-zts 

上述命令將靜態生成pthread到PHP中。

兩者同樣受5.3,5.4甚至5.5的支持。

此外,如果要覆蓋系統安裝,那麼你應該使用一個特定的--prefix,例如,如果你的PHP可執行程序位於/usr/bin(你可以用確定「的PHP」),然後--prefix=/usr將覆蓋系統安裝。

清理舊的安裝(如果源仍然可用,請進行卸載)。重新開始,確保你要麼覆蓋系統安裝,要麼完全隔離這個系統。

請在完成後更新錯誤報告。

+0

好吧,我重新安裝了整個Ubuntu,並且使用您建議的命令(--enable-pthreads = static)靜態構建PHP。目前沒有任何問題,所以似乎在PHP配置中出現了問題。謝謝你幫助我。 –

+0

是否需要爲所有安裝的PHP版本(即CGI,CLI和SAPI/Apache)啓用ZTS?或者,如果我打算只爲CLI使用pthread,我可以讓ZTS禁用其他的嗎? – robguinness

+0

Anywhere pthreads加載需要ZTS,如果您願意,您可以構建一個支持pthread的PHP獨立實例... –