在命令行(cli)中加载了PHP扩展,但Apache没有加载

4

最终更新。

问题已解决。

我解决问题的方法是按照以下链接中的说明,从源代码重新安装 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和apache2.2.20。
如果你们有线索,请帮忙。谢谢!
更新:
我确实在路径/etc/php5/apache2/php.ini的php.ini文件中放置了extension=rot13.so,但现在每当我重新启动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行匹配Unknown

任何人有关于是什么导致了这个故障的线索吗?

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

再次更新:

我发现网页上的phpinfo()和我从命令行得到的php -i版本不同...这太奇怪了吧?我会尝试google如何解决这个冲突。


2
在Ubuntu中,有两个php.ini文件。一个用于常规基于Web的PHP,另一个用于CLI。确保在两个文件中都启用了扩展。路径可能类似于'/etc/php5/apache2'和'/etc/php5/cli'。 - Jeremy Harris
1个回答

7
在Ubuntu中,有两个php.ini文件,一个是用于CLI的,另一个是用于apache的。
默认情况下,它们位于/etc/php5/cli/php.ini/etc/php5/apache2/php.ini
在您的情况下,您需要在apache2 php.ini文件中启用扩展。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接