【问题标题】:Needing an explanation regarding PHP extentions需要关于 PHP 扩展的解释
【发布时间】:2011-01-31 21:55:45
【问题描述】:

这里是一个快速概述:

我刚刚完成了 PHP 5.3.5 的编译,并尝试编译“--with”许多不同的扩展。我需要的扩展包括 mbstringintl。我可以手动 phpize、configure、make、make install mbstring 扩展,它似乎工作正常。但是,我无法为 intl 做同样的事情。

我的 ./configure 行如下所示:

./configure --with-openssl --with-pcre-regex --enable-calendar
            --with-curl --enable-exif --enable-ftp --with-gd
            --with-mhash --enable-mbstring --with-mysql --enable-zip
            --enable-intl --with-icu-dir=...

代码编译没有问题:./configure... make, make install

我将 php.ini-production 用于我的 php.ini 配置,并将 Apache 配置为将 php-cgi 用于特定的域,并且效果也很好。

快速:

<?php phpinfo() ?>

显示我实际上正在运行更新版本的 PHP。但是,“./configure...”行中指定的扩展名不会显示在 PHP 信息页面的任何位置。

经过一番探索,我发现我可以在 PHP 源文件夹中的单个扩展上运行 phpize,然后编译特定模块的构建并将其安装在我的 PHP 扩展目录中。添加后:

extension=MY_EXT

在我的 php.ini 中,扩展显示在我的 phpinfo() 页面上。

那么谁能解释为什么 --with-mbstring 似乎对我的编译没有影响?

intl 扩展没有编译问题,但是将 intl.so 文件移动到我的 PHP 扩展目录并在我的 php.ini 中添加扩展行没有效果。

【问题讨论】:

  • “谁能解释为什么--with-mbstring 似乎没有效果”。你的意思是--enable-intl
  • 我打错了,实际上确实是要输入“--enable-EXT_NAME”(如我的代码块中所示)。但是,将 intl 扩展放在一边,即使我使用“--enable-mbstring”,该扩展也不会被编译/安装/启用。直到我手动构建它并“安装”它,我才获得支持并看到它启用。

标签: php compilation php-5.3


【解决方案1】:

来自php.net,你试过了吗

如果您的 ICU 安装在 非标准目录,那么你可能 想要指定它的位置 LD_LIBRARY_PATH 环境变量 以便动态链接器可以找到它:$ 导出 LD_LIBRARY_PATH=/opt/icu/lib

否则,如果 PHP 和 ICU 安装到它们的默认位置, 然后附加选项 不需要“配置”。

【讨论】:

  • 我确实记得看到过这个块,但现在我再次阅读它,我意识到这可能是问题所在。出于某种原因,当我浏览它之前,我认为它指的是与编译相关的配置。
  • 我设置了 LD_LIBRARY_PATH 环境变量,然后编译了 intl 扩展。那成功了!它没有回答为什么我无法在已启用扩展的情况下构建 php,但至少我知道一种使它工作的方法。
猜你喜欢
  • 2019-11-08
  • 2015-04-21
  • 1970-01-01
  • 2014-09-26
  • 1970-01-01
  • 1970-01-01
  • 2014-03-06
  • 2021-04-19
  • 2017-05-11
相关资源
最近更新 更多