PHP扩展已在命令行(cli)中加载,但未由apache加载


PHP extension loaded in command line (cli) but not loaded by 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

然后,我通过命令行php测试了扩展。输出与上面的文章完全相同。

我想在我将扩展构建到php本身之后,我就不需要关心php.ini文件了。然后我尝试在浏览器中测试扩展,我发现phpinfo()页面没有显示任何关于新扩展的内容,而php-m命令显示我的扩展已加载。我检查了apache2日志,没有错误。

我在谷歌上搜索了将近一天,却一无所获。有些线程在stackoverflow中是相似的,但没有真正的工作解决方案。

我的系统是Ubuntu 11.10和php 5.3.10以及apache 2.2.20。

如果你们有线索,请帮忙。谢谢

更新:

我确实在php.ini文件中的/etc/php5/apache2/php.ini路径下放了扩展名=rot13.3o,但现在每当我重新启动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行的未知中匹配

有人知道是什么导致了这次故障吗?

顺便说一句,当我编译扩展时,我确实使用了/使用php-config=/usr/local/bin/php-config配置--enable-rot13,以确保它使用php的配置文件。

再次更新:

我发现网页上的phpinfo()有不同版本的php-I,我从命令行得到。。。这有多奇怪?我将尝试在谷歌上搜索如何解决这一冲突。

在Ubuntu中,有两个php.ini文件,一个用于CLI,另一个用于apache。

默认情况下,它们位于/etc/php5/cli/php.ini/etc/php5/apache2/php.ini

在您的情况下,还需要在apache2php.ini文件中启用扩展名。