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

时间:2012-03-19 07:50:13

标签: php apache command-line-interface

最终更新。

解决了问题。

我解决问题的方法是按照以下链接的说明从源代码完全重新安装Apache和PHP。

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

然后按照指令将扩展直接构建到PHP中来执行扩展 下面的链接。

唯一的事情是二进制文件只在特定的路径中,我认为这是一个容易解决的问题。

谢谢大家,这是我在Stackoverflow中的第一篇文章,我花了一整天的时间来制作我的第一个php扩展。虽然有点难,但我喜欢它! :d

原始问题

我正在尝试按照以下链接的说明构建一个php扩展:

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

我使用以下步骤将

./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。

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

更新

我确实将扩展名= 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我从命令行得到...这有多奇怪?我会尝试谷歌如何解决这个冲突。

1 个答案:

答案 0 :(得分:7)

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

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

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