mb_strlen()関数が使えません。エラーが表示される理由とは?

このQ&Aのポイント
  • Windows XP SP3、Apache2.2.8、PHP5.2.6の環境でmb_strlen()関数が使えません。「Call to undefined function mb_strlen()」というエラーが表示されます。
  • 問題はphp.iniの設定に関連している可能性があります。特に[mbstring]の部分の設定に問題があるかもしれません。
  • [mbstring]の設定項目にはmbstring.language、mbstring.internal_encoding、mbstring.http_output、mbstring.encoding_translation、mbstring.detect_order、mbstring.substitute_character、mbstring.func_overloadが含まれます。
回答を見る
  • ベストアンサー

Call to undefined function mb_strlen()

Windows XP SP3 Apache2.2.8 PHP5.2.6 --- mb_strlen()関数が使えません。 「Call to undefined function mb_strlen()」 というエラーが表示されます。 php.iniの設定の問題なのでしょうか? [mbstring]の部分だけ貼り付けておきます。 [mbstring] mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_output = UTF-8 mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none; mbstring.func_overload = 7

  • PHP
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • t_netbug
  • ベストアンサー率34% (15/44)
回答No.2

php_mbstring.dllは入っていますか? 入っているのであれば、自分で記述すればよいと思いますよ~。 ちなみにXAMPPだと設定を行わなくてもつかえたと思うのですが…。

参考URL:
http://www.apachefriends.org/jp/xampp-windows.html
taropoo
質問者

お礼

C:\Program Files\PHP\ 配下にはphp_mbstring.dllは入っていませんでした。 紹介いただいたXAMPPを導入したら問題解決しました。 ただ、文字コードの設定で多少てこずったので、報告させていただきます。 まず、文字コードの設定は下記のサイトを参考にしました。 http://centos.server-manual.com/apache.html ところが設定が反映されず、文字化けを起こしてしまいました。 C:\xampp\php\php.ini をいじっていたのですが反映されず C:\xampp\php\php5.ini というファイルがあったのでこちらかと思いましたがまた反映されませんでした。 XAMPP for Windowsのサイトのよくある質問の中に「質問6: どこから設定を変更できますか?」というのがあり、そこには 「PHP: .\xampp\apache\conf\php.ini」 とあるのですが、ここにはphp.iniはありません。ここへコピーすればいいのかと思ったのですが、やはり反映されませんでした。 ローカルのphpinfo()を見た所、「Loaded Configuration File 」が「C:\xampp\apache\bin\php.ini」とありました。このファイルを編集したところ、ようやく思い通りに動いてくれました。 苦労はしましたが解決できた事が嬉しかったです。 ご紹介いただきありがとうございました。

その他の回答 (1)

回答No.1

php.ini内にある 「;extension=php_mbstring.dll」 と記述されている部分の「;」を削除して保存後、apacheを再起動すれば大丈夫だと思います。

taropoo
質問者

補足

回答ありがとうございます。 php.ini内に ;extension=php_mbstring.dll という行が無いのですが。

関連するQ&A

  • Fatal error: Call to undefined function mb_language

    質問させていただきます。 以下の内容を実行すると、「Fatal error: Call to undefined function mb_language」と表示され、メールの送信が行えず、 過去の事例などから、php.iniのmbstringの設定や、 extension=php_mbstring.dllの設定を行いましたが、 現象は変わりませんでした。 phpinfoで確認しても、マルチバイトの設定が表示されず困っております。 mb_language("Ja"); mb_internal_encoding("SJIS"); if(mb_send_mail($to, $subject, $msg, $header)) 設定は以下のようにしました。 extension=php_mbstring.dll ※コメントを解除 ・ ・ [mbstring] ; language for internal character representation. mbstring.language = Japanese ; internal/script encoding. ; Some encoding cannot work as internal encoding. ; (e.g. SJIS, BIG5, ISO-2022-*) mbstring.internal_encoding = UTF-8 ; http input encoding. mbstring.http_input = pass ; http output encoding. mb_output_handler must be ; registered as output buffer to function mbstring.http_output = pass ; enable automatic encoding translation according to ; mbstring.internal_encoding setting. Input chars are ; converted to internal encoding by setting this to On. ; Note: Do _not_ use automatic encoding translation for ; portable libs/applications. mbstring.encoding_translation = off ; automatic encoding detection order. ; auto means mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII ; substitute_character used when character cannot be converted ; one from another mbstring.substitute_character = none; ; overload(replace) single byte functions by mbstring functions. ; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), ; etc. Possible values are 0,1,2,4 or combination of them. ; For example, 7 for overload everything. ; 0: No overload ; 1: Overload mail() function ; 2: Overload str*() functions ; 4: Overload ereg*() functions mbstring.func_overload = 0

    • ベストアンサー
    • PHP
  • PHP 文字コードについて

    以下のような環境のホスティングサーバでSmartyを使い簡単なアプリを作っています。 サーバ PHP Version 4.3.7 phpinfoの値 mbstring.detect_order auto mbstring.encoding_translation On mbstring.func_overload 0 mbstring.http_input auto mbstring.http_output SJIS mbstring.internal_encoding EUC-JP mbstring.language Japanese mbstring.script_encoding auto mbstring.substitute_character no value 今回、PHPソースはUTF-8、HTML(Smartyテンプレ)もUTF-8で作っています(作りたいです)。 この様な場合、PHPスクリプトに「ini_set」を記述するのが良いのか、又は$_POST等で受け取ったときに毎回「mb_convert_encoding」記述するのが良いのか、その両方か、アドバイスを頂きたいです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • UTF-8で文字化け

    いつもお世話になっております。 全てのファイルをEUC-JP で作成しております。 Googleマップを使用することになり、1ページだけ UTF-8 で出力したいと思います。 php.ini の設定は以下のようになっております。 -------------------------------------------------- default_charset EUC-JP mbstring.detect_order no value mbstring.encoding_translation Off mbstring.func_overload 0 mbstring.http_input pass mbstring.http_output EUC-JP mbstring.internal_encoding EUC-JP mbstring.language Japanese mbstring.substitute_character no value -------------------------------------------------- Googleマップを出力するページで以下のようにしたのですが 文字化けが直りません。 map.php -------------------------------------------------- ini_set("default_charset", "UTF-8"); mb_internal_encoding("UTF-8"); 他に設定する箇所はありますでしょうか。 よろしくご教示お願いいたします。 <環境> PHP:4.3.1

    • ベストアンサー
    • PHP
  • phpでmb_send_mailを用いてメールの送信を試みておりますが、うまくいきません

    phpでmb_send_mailを用いてメールの送信を試みておりますが、うまくいきません。 php.iniの現時点における設定は、以下の通りです。 [mail function] ; For Win32 only. ;SMTP = localhost ;smtp_port = 25 ; For Win32 only. ;sendmail_from = ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). sendmail_path = "sendmail -t -i" mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = auto mbstring.http_output = UTF-8 mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none; mbstring.func_overload = 0 ;mbstring.strict_encoding = Off なお、phpのスクリプトでは、mb_send_mail関数を呼ぶ直前に、  mb_language("ja");  mb_internal_encoding("utf-8"); を実行しております。 また、html部では、<meta…タグにおいて、charset=UTF-8の宣言を行い、 このhtml部を含むphpファイルは、文字コードUTF-8にて格納し直しました。 原因をいろいろ探ったのですが、自力では無理のようです。 原因と考えられる点をどうか教えて頂くようにお願い致します。

    • ベストアンサー
    • PHP
  • mbstringが無効

    Fedora10の環境にyumでPHPをインストールし、 php.iniのmbstringを下記のように設定しています。 ところが、mbstringの実行ができません。 phpinfo()を実行してもmbstringの項目が表示されません。 どなたか、ご教示いただければ幸いです。 [mbstring] mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS bstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none; mbstring.func_overload = 0 ;mbstring.strict_encoding = Off

    • ベストアンサー
    • PHP
  • エンコーディングについて

    設定(php.ini)での設定では mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = auto mbstring.encoding_stranslation = On mbstring.detect_order = auto mbstring.substitute_character = none mbstring.func_overload = 0 で行っています。 そこで、mb_http_input()関数で設定を見ようと思っても表示されません。これは他の皆様も表示されないのでしょうか? また、スクリプト上での設定方法 mb_language("Japanese"); mb_detect_order("auto"); ini_set("mbstring.http_input", "auto"); mb_http_output("auto"); mb_internal_encoding("EUC-JP"); mb_substitute_character("none"); ととある本に書いてあったのですが、ini_set("mbstring.http_input", "auto");ではなく、mb_http_input("auto");ではまずいのでしょうか? 初心者なのでわかりやすく教えていただければ幸いです。

    • ベストアンサー
    • PHP
  • phpで文字化け(php.ini)

    phpスプリクトはshift-jisで、文字化けしたためphp.iniをいじってみました。しかしどうやっても一定の漢字が文字化けしてしまいます。(「貼る」等…) 設定した箇所は下記の通りです(色々なサイトを回って調べた結果このような設定にしました) PHPのバージョンは4.4.1です。 default_charset = "Shift-JIS" mbstring.language = Japanese mbstring.internal_encoding = SJIS mbstring.http_input = auto mbstring.http_output = pass mbstring.encoding_translation = Off mbstring.detect_order = auto mbstring.substitute_character = none; mbstring.func_overload = 0

    • ベストアンサー
    • PHP
  • mb_convert_encoding() エラー

    http://www18.tok2.com/home/koumori27/xml/pxml/pxml2.htmlのxmlpaser_sample1.php3を自分のパソコンで試したら、Fatal error: Call to undefined function: mb_convert_encoding() in c:\php\xmlpaser_sample1.php on line 99と出ました。 http://www.php.net/manual/ja/ref.mbstring.php#ini.mbstring.languageに書いてある 例 1. php.ini 設定の例 mbstring.language = Japanese; mbstring.internal_encoding = UTF-8 ; mbstring.encoding_translation = On mbstring.http_input = auto ; mbstring.http_output = UTF-8 ; mbstring.detect_order = auto ; mbstring.substitute_character = none ; と http://oshiete1.goo.ne.jp/kotaeru.php3?q=293266 に書いてある方法を試しましたが Fatal error: Call to undefined function: mb_convert_encoding() in c:\php\xmlpaser_sample1.php on line 99 が直りません。 どうすれば直るのでしょうか?

    • ベストアンサー
    • PHP
  • phpmyadminで文字化け

    こんにちは、 現在、php5,mysql4で構築しているのですが、 phpmyadminでテーブルに入れた日本語を見ると 文字化けを起こしており、 たぶん、default_charsetだと思うのですが、 何を設定すればよいのでしょうか? MYSQL4 UTF-8 PHP5 mbstring.detect_order auto mbstring.encoding_translation Off mbstring.func_overload 0 mbstring.http_input auto mbstring.http_output SJIS mbstring.internal_encoding EUC-JP mbstring.language Japanese mbstring.script_encoding no value mbstring.substitute_character no value default_charset no value

    • 締切済み
    • PHP
  • 日本語表示ができない

    こんばんわ。 winXP+apache2.2+php5で日本語が表示されません。 UTF-8で設定したいのですが、 C:\WINDOWS\php.iniの設定>下記はとあるサイトを参考にしました mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = pass mbstring.http_output = pass mbstring.encoding_translation = Off mbstring.substitute_character = none mbstring.detect_order = UTF-8,SJIS-win,eucJP-win     or mbstring.detect_order = UTF-8 C:\WINDOWS\system32\php_mbstring.dllに入れました。 ですが、php_infoで確認してもmb_系が全くでてきません。 何か他の設定(抜け?)があるのでしょうか?

    • 締切済み
    • PHP

専門家に質問してみよう