2012-03-19 124 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文件中启用扩展。