2012-03-19 147 views
3

最終更新。PHP擴展加載在命令行(cli)但未加載apache

問題已解決。

我解決問題的方法是按照以下鏈接的指示完全從源代碼重新安裝Apache和PHP。

http://dan.drydog.com/apache2php.html

然後通過構建直接做延伸擴展到PHP通過 下面的鏈接下的指令​​之後。

唯一的問題是二進制文件都只在特定的路徑,我認爲這是一個容易解決的問題。

謝謝大家,這是我在Stackoverflow的第一篇文章,我花了一整天的時間來做出我的第一個php擴展。雖然有點艱難,但我喜歡它! :d

原始的問題

我試圖建立一個PHP擴展通過以下鏈接指令後:

http://docstore.mik.ua/orelly/webprog/php/ch14_03.htm

我建 'ROT13' 的拓進php使用以下步驟

./buildconf 
./configure --enable-rot13 
make 
sudo make install 

然後我測試了extensi通過命令行php。輸出與上面的文章完全一樣。

我想當我建立到php本身的擴展後,我不需要關心php.ini文件。然後我嘗試在瀏覽器中測試擴展,我發現phpinfo()頁面沒有顯示任何有關新擴展的信息,而php -m命令顯示我的擴展已加載。我檢查了apache2日誌,沒有錯誤。

我搜索了近一天,並沒有得到任何線索。一些線程在stackoverflow類似,但沒有真正的工作解決方案。

我的系統是Ubuntu 11.10和PHP 5.3.10和apache2.2.20。

如果你們有線索,請幫忙。謝謝!

更新:

我也把延長= rot13.so在php.ini文件在/etc/php5/apache2/php.ini路徑,但現在每當我重新啓動的Apache2服務器時,我得到了以下錯誤。

PHP Warning: PHP Startup: rot13: Unable to initialize module 
Module compiled with build ID=API20090626,TS,debug 
PHP compiled with build ID=API20090626,NTS 

這些選項需要未知匹配在線0

任何人有什麼造成此故障的任何線索?

順便說一句,當我編譯擴展名時,我確實使用了./configure --enable-rot13 --with-php-config =/usr/local/bin/php-config來確保它使用配置文件的PHP。再次

更新:

我發現,在phpinfo()函數從網頁都有不同版本的PHP -i我在命令行中得到的...真奇怪是什麼?我會嘗試谷歌如何找出這種衝突。

+2

在Ubuntu中,有兩個** php.ini文件。一個用於常規基於Web的PHP和其他CLI。確保兩者均啓用擴展功能。路徑可能類似'/ etc/php5/apache2'和'/ etc/php5/cli' – 2012-03-19 07:53:00

回答

6

在Ubuntu中,有2個php.ini文件,一個用於CLI,另一個用於apache。

默認情況下,它們位於/etc/php5/cli/php.ini/etc/php5/apache2/php.ini

就你而言,你需要在apache2 php.ini文件中啓用擴展。