【问题标题】:How to update PCRE in CENTOS/Redhat 6如何在 CENTOS/Redhat 6 中更新 PCRE
【发布时间】:2013-12-08 02:41:28
【问题描述】:

要安装 Scribunto,Mediawiki 插件,它至少需要 PCRE 版本 8.1。但在 CENTOS 更新中,最高版本为 7.8。

我成功编译了8.33版本的源代码,使用“pcretest -C”命令,已经是8.33版本了。但是 phpinfo() 仍然是旧的 PCRE 7.8。

如何将php中的PCRE指向最新版本?

【问题讨论】:

  • 您自己的 libpcre 版本安装到了哪里?尝试通过ld.so.confLD_LIBRARY_PATH 对其进行优先级排序,或者使用LD_PRELOAD= 专门运行Apache/PHP,只需使用您的自定义pcre 构建。
  • 我安装到 /usr。我是这个领域的新手。我知道 ld.so.conf,但我不知道 LD_LIBRARY_PATH 和 LD_PRELOAD。我不知道如何找到 php 从哪里获取 pcre。非常感谢一步一步的命令行。

标签: php linux centos wikipedia centos6


【解决方案1】:

叹息

我觉得你。

我可以告诉你,最终对我有用的是构建 PCRE from source 并在 /etc/httpd/conf.d/php.conf 中使用 FastCGI(CentOS 6 中的 mod_fcgid 包)和这样的节:

<IfModule fcgid_module>
  SetEnv LD_PRELOAD /usr/local/lib/libpcre.so.1

  ScriptAlias /fcgi-bin/ /var/www/fcgi-bin/
  AddType application/x-httpd-fastphp .php
  Action application/x-httpd-fastphp /fcgi-bin/php-cgi

  <Directory /var/www/fcgi-bin/>
    # Allows /usr/bin/php-cgi to be symlinked here
    Options +FollowSymLinks
  </Directory>
</IfModule>

这是我在放弃并求助于 FastCGI 之前尝试使用默认的“模块化”PHP 设置 (php5_module) 的列表。

  • PassEnv LD_PRELOADLD_PRELOAD=/usr/local/lib/libpcre.so.1/etc/sysconfig/httpd 中定义。
  • SetEnv LD_PRELOAD /usr/local/lib/libpcre.so.1
  • LoadFile /usr/local/lib/libpcre.so.1

然而,我一般将这些指令放在VirtualHost 部分中,所以我不排除order 是问题的可能性。也就是说,这些指令完全有可能需要在 PHP 模块加载之前 出现,而​​我没有这样做。我使用的是/etc/httpd/conf.d/php.confvhosts.conf,并且通常在我试验时尽量不要弄脏顶级配置文件。

最终我失去了耐心,尝试走 FCGI 路线,这对我有用。如果您愿意将 PHP 作为可加载模块运行,那么您可能希望尝试上述一些选项,例如在加载 PHP DSO 之前在 httpd.conf 中指定的 LoadFile加载 PHP DSO。

【讨论】:

  • 其实我已经通过将 Centos 6 升级到 7 解决了这个问题,当我问这个问题时它并不存在。不过谢谢你的回答。
猜你喜欢
  • 1970-01-01
  • 2013-02-03
  • 1970-01-01
  • 2014-12-31
  • 2013-08-29
  • 2013-06-27
  • 1970-01-01
  • 2019-06-21
  • 1970-01-01
相关资源
最近更新 更多