Skip to main content
 首页 » 编程设计

php之如何在CENTOS/Redhat 6 中更新PCRE

2026年05月17日7三少

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

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

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

请您参考如下方法:

感叹

我觉得你。

我可以告诉你,最终对我有用的是构建 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.conf 和一个 vhosts.conf 并且通常在我使用时尽量不要破坏顶级配置文件实验。

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