Kucher2 122 Опубликовано: 2012-03-09 13:17:55 Share Опубликовано: 2012-03-09 13:17:55 Привет всем. Ну, я уже мозг себе сломал, по всем руководствам прошёлся - всё должно пахать, а не пашет. Дано: FreeBSD 7.1, Apache 2, PHP 5.2.9. Удалённо, через консоль ssh. Проблема: при попытке применения команды php "mb_substr_count" в PHP - браузер выдал Fatal error: Call to undefined function mb_substr_count() Что делал: cd /usr/ports/lang/php52-extensions make config #отмечаем галкой "MBSTRING" make install clean /usr/local/apache22/bin/apachectl restart Не заработало. Тогда: portsnap fetch portsnap extract portsnap update /usr/local/apache22/bin/apachectl stop pkg_delete apache pkg_delete php Снова ставлю PHP + расширения, настраиваю конфиг апача, правлю php.ini: from ;extension=php_mbstring.dll to extension=php_mbstring.dll /usr/local/apache22/bin/apachectl start Всё та же Fatal error: Call to undefined function mb_substr_count() Просто с mbstring много вкусностей, не хочется себе отказывать в удовольствии, а тут такой затык. В логах Апача пусто, просто не знаю где глянуть что ему надо. Может сталкивался кто с таким чудом? Ссылка на сообщение Поделиться на других сайтах
parazit 11 Опубліковано: 2012-03-09 13:22:14 Share Опубліковано: 2012-03-09 13:22:14 Привет всем. Ну, я уже мозг себе сломал, по всем руководствам прошёлся - всё должно пахать, а не пашет. Дано: FreeBSD 7.1, Apache 2, PHP 5.2.9. Удалённо, через консоль ssh. Проблема: при попытке применения команды php "mb_substr_count" в PHP - браузер выдал Fatal error: Call to undefined function mb_substr_count() Что делал: cd /usr/ports/lang/php52-extensions make config #отмечаем галкой "MBSTRING" make install clean /usr/local/apache22/bin/apachectl restart Не заработало. Тогда: portsnap fetch portsnap extract portsnap update /usr/local/apache22/bin/apachectl stop pkg_delete apache pkg_delete php Снова ставлю PHP + расширения, настраиваю конфиг апача, правлю php.ini: from ;extension=php_mbstring.dll to extension=php_mbstring.dll /usr/local/apache22/bin/apachectl start Всё та же Fatal error: Call to undefined function mb_substr_count() Просто с mbstring много вкусностей, не хочется себе отказывать в удовольствии, а тут такой затык. В логах Апача пусто, просто не знаю где глянуть что ему надо. Может сталкивался кто с таким чудом? может стоит php5.3 пробовать Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2012-03-09 13:26:22 Автор Share Опубліковано: 2012-03-09 13:26:22 В манах написано что подобные проблемы есть с PHP ниже версии 5.2, а здесь 5.2.9. Не думаю что переход на 5.3 всё решит, просто мне надо разобраться что ему нужно. Ссылка на сообщение Поделиться на других сайтах
Sargas 52 Опубліковано: 2012-03-09 13:44:50 Share Опубліковано: 2012-03-09 13:44:50 Вы не то включаете extension=php_mbstring.dll для Винды. Вам надо в файле extensions.ini включить этот модуль. Лежит оно по-моему в /usr/local/etc/php/extensions.ini Ссылка на сообщение Поделиться на других сайтах
nightfly 1 241 Опубліковано: 2012-03-09 13:46:13 Share Опубліковано: 2012-03-09 13:46:13 extension=php_mbstring.dll Екхм, екхм Windows Extensions чуть выше какбы намекает. php -m посмотрите - если там есть mbstring значит гут, если нету - смотрите есть ли у вас в /usr/local/lib/php/дата_билда/mbstring.so Если есть - врубаете его в виде extension=mbstring.so в /usr/local/etc/php/extensions.ini Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2012-03-09 14:01:04 Автор Share Опубліковано: 2012-03-09 14:01:04 php -m: [php Modules] ctype date dom filter gd hash iconv json libxml mbstring mcrypt pcre PDO pdo_mysql pdo_sqlite posix Reflection session SimpleXML SPL SQLite standard tokenizer xml xmlreader xmlwriter [Zend Modules] /usr/local/etc/php/extensions.ini extension=ctype.so extension=pcre.so extension=simplexml.so extension=spl.so extension=dom.so extension=filter.so extension=gd.so extension=hash.so extension=iconv.so extension=json.so extension=pdo.so extension=pdo_sqlite.so extension=pdo_mysql.so extension=posix.so extension=session.so extension=sqlite.so extension=tokenizer.so extension=xml.so extension=xmlreader.so extension=xmlwriter.so extension=mbstring.so extension=mcrypt.so Т.е. всё есть как бы. О_о Ссылка на сообщение Поделиться на других сайтах
nightfly 1 241 Опубліковано: 2012-03-09 14:10:37 Share Опубліковано: 2012-03-09 14:10:37 phpinfo(); что говорит? Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2012-03-09 14:10:48 Автор Share Опубліковано: 2012-03-09 14:10:48 Так, стоп пока, кажется наклёвывается правильный путь... щас я... Ссылка на сообщение Поделиться на других сайтах
nightfly 1 241 Опубліковано: 2012-03-09 14:13:23 Share Опубліковано: 2012-03-09 14:13:23 Так, стоп пока, кажется наклёвывается правильный путь. Чисто из интереса проверил. Вот она рыба моей мечты путь в одну строчку: # apachectl stop && cd /usr/ports/lang/php5 && make WITH_CLI=yes WITH_APACHE=yes BATCH=yes install && cd /usr/ports/lang/php5-extensions/ && make WITH_MYSQL=yes WITH_MBSTRING=yes WITH_ICONV=yes WITH_GD=yes WITH_BCMATH=yes WITH_XML=yes BATCH=yes install && apachectl start Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2012-03-10 07:35:01 Автор Share Опубліковано: 2012-03-10 07:35:01 Добил я его, заработала функция, но правда как-то странно. Хоть ошибку не выдаёт, но выражение типа: mb_substr_count("zasada12345", "/[0-9]/") Равно "0" :/ Так же не работает "d" в любых вариантах - функция воспринимает за конкретику то что находится в кавычках, например mb_substr_count("zasada 0-9", "/[0-9]/") выдаст "1". Оно и раньше так было, не только с этой функцией, что странно для PHP. Это нормально? Может я чего-то неверно понял, с синтаксисом? Только добрался до этих понятий, извините если что. За помощь спасибо, большущее! Причина была в остатках прежней версии, скрипт запуска стартовал "не тот Апач". Угробился правда "МС" после всех манипуляций - не могу толком поставить его теперь ни из портов ни из сорцов: ругается на то что не включена поддержка UTF8 и портит консоль при попытке работы с текстом в любой форме, хотя UTF8 включаю вручную при сборке с оф. сайта; или плюётся на неверный синтаксис скрипта сборки vfs. Ткнул пока лайт-версию, ибо уже 2 ночи было - такая бяка неудобная! Ссылка на сообщение Поделиться на других сайтах
nightfly 1 241 Опубліковано: 2012-03-10 09:05:10 Share Опубліковано: 2012-03-10 09:05:10 Ну в mb_ очень много "приятных" особенностей. Само их назначение как-бы намекает что все должно работать с юникодом (читаем забываем про кодировки и различия в локалях) - а фигушки. Ближайший пример из практики - давеча захотелось мне сделать регистронезависимый поиск по юзерам. Джойн по дохренища табличкам оказался слишком напряжным и неподдерживаемым в моем варианте, так что легкий путь с LIKE пришлось отбросить. Как результат - strtolower не работает возвращая исходную строку, это понятно. Окей, пробуем mb_strtolower и.... он тоже не работает возвращая исходную строку, потому как кирилица Как результат - куча самопальных подпорок со смещениями буковок по арраям. Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2012-03-10 09:52:42 Автор Share Опубліковано: 2012-03-10 09:52:42 Чёрт. Выходит зря мучился, ещё и МС запорол. Ссылка на сообщение Поделиться на других сайтах
nightfly 1 241 Опубліковано: 2012-03-10 10:10:23 Share Опубліковано: 2012-03-10 10:10:23 Выходит зря мучился Ну думаю оно в общем то рабочее если заморочиться на тему описания локали итд. Просто получится менее переносимо. ещё и МС запорол. он для слабых духом, отвыкайте Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2012-03-10 14:59:23 Автор Share Опубліковано: 2012-03-10 14:59:23 В общем нашёл тут хороший рабочий пример: http://forum.php.su/topic.php?forum=4&topic=2031&postid=1328256042#1328256042 $string = '434jij>!23#$'; $count = strlen(preg_replace('/[^d]/','',$string)); //var_dump($count); От mb_substr_count Так и не смог добиться адекватного результата. Жаль, не допилили. Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас