最终更新。
问题解决了。
我解决问题的方法是按照以下链接的说明完全从源代码重新安装 Apache 和 PHP。
http://dan.drydog.com/apache2php.html http://dan.drydog.com/apache2php.html
然后按照以下说明直接将扩展构建到 PHP 中来进行扩展
下面的链接。
唯一的问题是二进制文件都只在特定路径中,我认为这是一个很容易解决的问题。
谢谢大家,这是我在 Stackoverflow 上的第一篇文章,我花了一整天的时间来制作我的第一个 php 扩展。虽然有点难,但是我喜欢! :D
原始问题
我正在尝试按照以下链接的说明构建一个 php 扩展:
http://docstore.mik.ua/orelly/webprog/php/ch14_03.htm 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。
如果各位有线索,请帮忙。谢谢!
Update:
我确实将 extension=rot13.so 放在 /etc/php5/apache2/php.ini 路径下的 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 行的 Unknown 中匹配
任何人都知道导致此故障的原因吗?
顺便说一句,当我编译扩展时,我确实使用了 ./configure --enable-rot13 --with-php-config=/usr/local/bin/php-config 来确保它使用 php 的配置文件。
再次更新:
我发现网页中的 phpinfo() 有不同版本的 php -i 我从命令行获得...这有多奇怪?我会尝试用谷歌搜索如何解决这个冲突。