3

我正在尝试在我的网站上运行正则表达式,并且收到以下回复:

编译失败:在偏移量 1 处未编译对 \P、\p 和 \X 的支持

在谷歌搜索了一下之后,我发现我的服务器上的 PCRE 显然没有启用 UTF8,因此导致了问题。当我使用 pcretest -CI SSH 时

PCRE 版本 6.6 2006 年 2 月 6 日

编译时支持 UTF-8 不支持 Unicode 属性 换行符为 LF 内部链接大小 = 2 POSIX malloc 阈值 = 10
默认匹配限制 = 10000000
默认递归深度限制 = 10000000 匹配递归使用堆栈

当我执行 yum update pcre 时,它​​告诉我没有任何要更新的内容。

人们告诉我我可以打开 UTF-8 支持...帮助?

我是菜鸟。

4

3 回答 3

3

这里有一个很好的关于为 pcre 重建 RPM 的教程。

如果您向下滚动到“为...更新了 RPM 文件”,如果您只想让它工作,您会发现一些预构建的 RPM(请记住在完成后重新启动 Apache,而不仅仅是优雅地重新加载)。

tl;dr 版本是:用--enable-utf8and重新编译 pcre--enable-unicode-properties

于 2010-01-21T04:59:56.917 回答
3

Yum 现在应该v6.6.6.el5_6.1在其存储库中找到 PCRE,因此yum update pcre在 Centos 5 上执行解决了我的问题。

于 2011-07-06T05:15:26.613 回答
1

PHP 不使用“pcre”应用程序/包。PCRE 支持内置于 PHP 库中。你得到的错误是告诉你你的 PHP 库不是用 PCRE UTF-8 支持编译的。

您需要使用使用正确的 UTF-8 选项构建的正确 PCRE 静态库重新编译 PHP。

于 2010-01-21T04:21:02.703 回答