【问题标题】:PHP 5.4 - CodeIgniter - PCRE library issue workaround in shared-hostingPHP 5.4 - CodeIgniter - 共享主机中的 PCRE 库问题解决方法
【发布时间】:2013-05-30 13:13:21
【问题描述】:

我打算将 codeigniter 项目从我的计算机移动到公共服务器(其中安装了 Cpanel 的虚拟专用服务器)。

在公共服务器中我得到了错误:

Message: preg_match(): Compilation failed: unknown option bit(s) set at offset 0

您可以查看here
在检查了一些其他相关问题后,我可以看到它是因为虚拟专用服务器使用的 PCRE 库太旧或者它没有 utf-8 支持。
PCRE 使用的版本是 7.8。 要查看我的虚拟服务器的 phpinfo,请单击phpinfo here

现在,我知道我可以通过重建pcre,php等来解决这个问题。但是我的老板坚持使用这个注册的虚拟服务器,它只给我有限的权限。只有 CPANEL 帐户和 FTP 才能上传/删除文件

所以问题是:
- CodeIgniter 是否必须启用此 PCRE 才能运行?
- 是否有任何其他解决方法可以使其在服务器中运行?

我已经联系了支持人员,他们说,他们的 CPanel 目前仅支持 PCRE 7.8 版。我很困惑,这与 Cpanel 有什么关系?不是应该重建 PCRE 库并让 php config 直接指向它吗?我的意思是只有 Cpanel 的 GUI 对吗?

非常感谢任何帮助。

【问题讨论】:

    标签: php cpanel pcre shared-hosting


    【解决方案1】:

    我建议你编辑/system/core/Utf8.php 文件。

    在第 44 行,在 preg_match 前面添加一个 @

    这至少应该抑制错误消息并允许脚本继续。

    原文:

        function __construct()
        {
            log_message('debug', "Utf8 Class Initialized");
    
            global $CFG;
    
            if (
                preg_match('/./u', 'é') === 1                   // PCRE must support UTF-8
    

    修改:

        function __construct()
        {
            log_message('debug', "Utf8 Class Initialized");
    
            global $CFG;
    
            if (
                @preg_match('/./u', 'é') === 1                  // PCRE must support UTF-8
    

    【讨论】:

    • 是的,我明白了。但我真的很好奇,它会产生其他问题吗? Codeigniter 真的需要这个 PCRE 库吗?我不是 CodeIgniter 专家...
    • 据我所知,“不应该”™。它将允许脚本进行并定义它的 utf 支持变量。至少值得一试。
    • 当有人花时间帮助你时,用“是的,我明白了”开始评论并不是最好的方法:P
    • 当我说“我明白了”时,我一直认为 ppl。大声笑。非常感谢您的反馈和时间。我会试试你的答案。
    • 你好戴尔。我已经对其进行了测试,并且可以正常工作,没有任何错误。我会接受你的回答。
    猜你喜欢
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 2015-03-01
    相关资源
    最近更新 更多