2012-04-26 5 views
6

Недавно я обновил свой PHP до версии 5.4.1 на своей Lion OS X 64bit, я получаю ошибку, в Codeigniter:PHP 5.4 после установки: preg_match(): сбой компиляции: неизвестные параметры бит (ы) установлены со смещением 0

Severity: Warning 

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

Filename: core/Utf8.php 

Line Number: 44 

Я Googled проблемы, это, кажется, проблема с Lib PCRE в PHP, а я последовал за this tutorial, который показывает, установить PCRE с самогон, который я сделал (я бегу PCRE 8.30) и это не решило проблему.

Я пробовал искать решения, но я не натолкнулся на тот, который помог - есть ли способ исправить эту проблему с PCRE lib?

EDIT: Просто редактировал этот вопрос, чтобы напомнить мне, что моя установка была:

./configure \ 
--prefix=/usr \ 
--mandir=/usr/share/man \ 
--infodir=/usr/share/info \ 
--sysconfdir=/private/etc \ 
--with-apxs2=/usr/sbin/apxs \ 
--enable-cli \ 
--with-config-file-path=/etc \ 
--with-libxml-dir=/usr \ 
--with-openssl=/usr \ 
--with-kerberos=/usr \ 
--with-zlib=/usr \ 
--enable-bcmath \ 
--with-bz2=/usr \ 
--enable-calendar \ 
--with-curl=/usr \ 
--enable-dba \ 
--enable-exif \ 
--enable-ftp \ 
--with-gd \ 
--with-freetype-dir=/usr/X11/ \ 
--with-jpeg-dir=/usr \ 
--with-png-dir=/usr/X11/ \ 
--enable-gd-native-ttf \ 
--with-icu-dir=/usr \ 
--with-iodbc=/usr \ 
--with-ldap=/usr \ 
--with-ldap-sasl=/usr \ 
--with-libedit=/usr \ 
--enable-mbstring \ 
--enable-mbregex \ 
--with-mysql=mysqlnd \ 
--with-mysqli=mysqlnd \ 
--with-pdo-mysql=mysqlnd \ 
--with-mysql-sock=/var/mysql/mysql.sock \ 
--with-readline=/usr \ 
--enable-shmop \ 
--with-snmp=/usr \ 
--enable-soap \ 
--enable-sockets \ 
--enable-sysvmsg \ 
--enable-sysvsem \ 
--enable-sysvshm \ 
--with-tidy \ 
--enable-wddx \ 
--with-xmlrpc \ 
--with-iconv-dir=/usr \ 
--with-xsl=/usr \ 
--enable-zip \ 
--with-pgsql=/usr \ 
--with-pdo-pgsql=/usr \ 
--with-mcrypt=/usr/local/lib 
+0

Я получаю ту же ошибку, используя CakePHP 2.1, используя preg_replace. У меня такая же настройка, как у вас (Lion, PHP 5.4.1, pcre 8.30). Есть некоторые условия, при которых я получаю эту ошибку, а другие, где preg_replace не работает вообще.Таким образом, это не проблема, ограниченная этими переменными с Codeigniter. –

+1

Я только что заметил что-то на моем конце. Хотя у меня есть версия 8.30, установленная через homebrew, и я ссылаюсь на ее путь во время config, phpinfo() показывает версия 8.02! Держу пари, что ' проблема. Посмотрите, так ли это на вашем конце. Теперь мне просто нужно выяснить, как его собрать, используя 8.30. –

+0

Да, это именно то, что я сделал, я не понимаю, почему PHP не подбирает его, даже если вы укажете каталог '/ usr' для pcre, даже если есть домашняя установка pcre. – MacMac

ответ

6

Я был в состоянии получить PHP 5.4.1 работает с PCRE версии 8.12 (который является версией включены в PHP 5.4.1 Я верю). После всех комментариев и комментариев, перечисленных в комментариях к вопросу, я решил скомпилировать PHP без флагов PCRE и позволить PHP просто использовать его по умолчанию. Используя значения по умолчанию, он компилируется с 8.12.

Теперь, следующие вопросы, конечно, ПОЧЕМУ это происходит. Я бы все же ожидал, что 8.30 будет скомпилирован с PHP с флагами, которые я предоставил. Но на данный момент я просто счастлив, что все работает.

Ниже приведены параметры конфигурации, которые я получил, чтобы работать, если вы хотите попробовать это с вашего конца.

./configure \ 
--prefix=/usr \ 
--mandir=/usr/share/man \ 
--infodir=/usr/share/info \ 
--sysconfdir=/private/etc \ 
--with-apxs2=/usr/local/apache/bin/apxs \ 
--enable-cli \ 
--with-config-file-path=/etc \ 
--with-libxml-dir=/usr \ 
--with-openssl=/usr \ 
--with-kerberos=/usr \ 
--with-zlib=/usr \ 
--enable-bcmath \ 
--with-bz2=/usr \ 
--enable-calendar \ 
--with-curl=/usr \ 
--enable-dba \ 
--enable-exif \ 
--enable-ftp \ 
--with-gd \ 
--with-freetype-dir=/usr/X11/ \ 
--with-jpeg-dir=/usr \ 
--with-png-dir=/usr/X11/ \ 
--enable-gd-native-ttf \ 
--with-icu-dir=/usr \ 
--with-iodbc=/usr \ 
--with-ldap=/usr \ 
--with-ldap-sasl=/usr \ 
--with-libedit=/usr \ 
--enable-mbstring \ 
--enable-mbregex \ 
--with-mysql=mysqlnd \ 
--with-mysqli=mysqlnd \ 
--with-pdo-mysql=mysqlnd \ 
--with-mysql-sock=/var/mysql/mysql.sock \ 
--with-readline=/usr \ 
--enable-shmop \ 
--with-snmp=/usr \ 
--enable-soap \ 
--enable-sockets \ 
--enable-sysvmsg \ 
--enable-sysvsem \ 
--enable-sysvshm \ 
--with-tidy \ 
--enable-wddx \ 
--with-xmlrpc \ 
--with-iconv-dir=/usr \ 
--with-xsl=/usr \ 
--enable-zip \ 
--with-pgsql=/usr \ 
--with-pdo-pgsql=/usr \ 
--with-mcrypt=/usr 
+0

Ничего себе! Это действительно сработало, наконец, хорошее решение. Не могу сказать, сколько я могу поблагодарить за это :-) – MacMac

+0

Отлично! Рад, что это сработало и для вас. Если вы столкнулись с подобной проблемой в будущем и выясните, как ее скомпилировать с обновленной версией PCRE, пожалуйста, напишите и дайте мне знать! –

+0

У меня возникла эта проблема, но моя команда './Configure' терпит неудачу, если я не укажу путь PCRE (просто говорит:« clang: ошибка: команда компоновщика не удалась с кодом выхода 1 (используйте -v, чтобы увидеть вызов) »). –

-1

Перекомментировать httpd. Перед этим убедитесь, что в вашей системе имеется только одна версия pcre.

3

Я решил эту проблему, обновив PHP и PCRE на своей машине Linux, используя yum update.

PHP был обновлен до версии 5.3.17, а PCRE был обновлен до версии 8.21-5.3amzn1 (я запускаю экземпляр Amazon EC2).

+0

У меня была такая же проблема, и это решение также разрешило эту проблему. Я нахожусь в Mac OS X с MacPorts. Я использовал «обновление порта устарел», чтобы получить последние версии PHP (5.3.17) и PCRE (8.31 2012-07-06). – mixable

+1

Когда вы используете диспетчер пакетов, вы получаете предварительно скомпилированные версии этих приложений. Таким образом, ожидалось, что версии, прошедшие через диспетчер пакетов, будут работать вместе. Тем не менее, этот ответ не относится к вопросу, так как человек, спрашивающий, пытается скомпилировать новую версию php, доступную через диспетчер пакетов или через Apple. Проблема здесь возникает при попытке использовать любую версию PCRE, а затем пытается скомпилировать PHP из исходного кода на mac. –

0

Мое решение было близко к предложению @bigZero.

Я не мог заставить его работать на варево, потому что, когда я пытался установить pcre v8.12 на заваривание, это было невозможно, потому что оно было (возможно) стерто из хранилища. Я имею в виду, это показано на brew versions pcre, но когда я попытался установить его не удалось загрузить из ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

Так что мне пришлось скачать исходный код PCRE 8.12 из http://www.pcre.org, скомпилировать и установить его. Я использовал следующий Configure:. ./configure --prefix=/usr --enable-utf8 --enable-unicode-properties

Я пытался перекомпилировать PHP (в моем случае 5.4.10) без опции --with-pcre-regex (как это было предложено @ Скотт-Харуэлле Но это не удалось во время компиляции, чем я добавил --with-pcre-regex=/usr/ и это, наконец.

 Смежные вопросы

  • Нет связанных вопросов^_^