Kucher2 122 Posted 2012-03-09 13:17:55 Share Posted 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 много вкусностей, не хочется себе отказывать в удовольствии, а тут такой затык. В логах Апача пусто, просто не знаю где глянуть что ему надо. Может сталкивался кто с таким чудом? Link to post Share on other sites
parazit 11 Posted 2012-03-09 13:22:14 Share Posted 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 пробовать Link to post Share on other sites
Kucher2 122 Posted 2012-03-09 13:26:22 Author Share Posted 2012-03-09 13:26:22 В манах написано что подобные проблемы есть с PHP ниже версии 5.2, а здесь 5.2.9. Не думаю что переход на 5.3 всё решит, просто мне надо разобраться что ему нужно. Link to post Share on other sites
Sargas 52 Posted 2012-03-09 13:44:50 Share Posted 2012-03-09 13:44:50 Вы не то включаете extension=php_mbstring.dll для Винды. Вам надо в файле extensions.ini включить этот модуль. Лежит оно по-моему в /usr/local/etc/php/extensions.ini Link to post Share on other sites
nightfly 1,252 Posted 2012-03-09 13:46:13 Share Posted 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 Link to post Share on other sites
Kucher2 122 Posted 2012-03-09 14:01:04 Author Share Posted 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 Т.е. всё есть как бы. О_о Link to post Share on other sites
nightfly 1,252 Posted 2012-03-09 14:10:37 Share Posted 2012-03-09 14:10:37 phpinfo(); что говорит? Link to post Share on other sites
Kucher2 122 Posted 2012-03-09 14:10:48 Author Share Posted 2012-03-09 14:10:48 Так, стоп пока, кажется наклёвывается правильный путь... щас я... Link to post Share on other sites
nightfly 1,252 Posted 2012-03-09 14:13:23 Share Posted 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 Link to post Share on other sites
Kucher2 122 Posted 2012-03-10 07:35:01 Author Share Posted 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 ночи было - такая бяка неудобная! Link to post Share on other sites
nightfly 1,252 Posted 2012-03-10 09:05:10 Share Posted 2012-03-10 09:05:10 Ну в mb_ очень много "приятных" особенностей. Само их назначение как-бы намекает что все должно работать с юникодом (читаем забываем про кодировки и различия в локалях) - а фигушки. Ближайший пример из практики - давеча захотелось мне сделать регистронезависимый поиск по юзерам. Джойн по дохренища табличкам оказался слишком напряжным и неподдерживаемым в моем варианте, так что легкий путь с LIKE пришлось отбросить. Как результат - strtolower не работает возвращая исходную строку, это понятно. Окей, пробуем mb_strtolower и.... он тоже не работает возвращая исходную строку, потому как кирилица Как результат - куча самопальных подпорок со смещениями буковок по арраям. Link to post Share on other sites
Kucher2 122 Posted 2012-03-10 09:52:42 Author Share Posted 2012-03-10 09:52:42 Чёрт. Выходит зря мучился, ещё и МС запорол. Link to post Share on other sites
nightfly 1,252 Posted 2012-03-10 10:10:23 Share Posted 2012-03-10 10:10:23 Выходит зря мучился Ну думаю оно в общем то рабочее если заморочиться на тему описания локали итд. Просто получится менее переносимо. ещё и МС запорол. он для слабых духом, отвыкайте Link to post Share on other sites
Kucher2 122 Posted 2012-03-10 14:59:23 Author Share Posted 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 Так и не смог добиться адекватного результата. Жаль, не допилили. Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now