日本PHPユーザ会 掲示板

日本PHPユーザ会運営の掲示板です。※ただいまテスト運用中です。

日本PHPユーザ会 掲示板 » PHP 5 » mb_convert_encoding使用時のエラー

mb_convert_encoding使用時のエラー

ページ: 1

投稿者 投稿
会員
登録者: 11 2009
返信数: 8
始めましてkishiharaと申します。
最近PHPの勉強を始めました。
今後こちらで色々とお世話になると思いますがよろしくお願いいたします。

今回、フォームからPOSTで受け取ったテキストの文字コードを
Shift-JISからEUC-JPに変更したいと思い下記の様なロジックを書きました。

$str = mb_convert_encoding($str, "EUC-JP", "Shift-JIS");

そして実行した所

Fatal error: Call to undefined function mb_convert_encoding() in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\view.php on line 10

と言ったエラーが発生いたしました。
エラーの内容を調べると定義がされてない為と言った感じらしいのですが
何処の定義が足りないのか判りません。
大変お手数ですが、定義の足りない部分を教えていただけますようお願いいたします。

~環境~
Windows XP
PHP 5.2.11
Apache HTTP Server 2.2

C:\windows\php.iniの
[mbstring]
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.detect_order = auto
mbstring.substitute_character = none;
のコメントは全てはずしております。
会員
登録者: 8 2009
返信数: 103
こんにちは、
mbstringが有効になっていないようですね。

php.iniの
extension_dir = "dllのパス"
extension=php_mbstring.dll
の設定を確認してみてください。
会員
登録者: 11 2009
返信数: 8
ご返信有難う御座います。
早速設定を確認した所下記の通りになっていました。

extension_dir = "C:/PHP/ext"
上のパス内にphp_mbstring.dllは存在していました。
extension=php_mbstring.dllの;は外れていました

ちなみにphpinfo()で設定を見た所
Loaded Configuration Fileが(none)になっているのですが大丈夫でしょうか?
会員
登録者: 8 2009
返信数: 103
こんばんは。

php.iniをC:\windows\php.ini
からphpのインストールフォルダに移動してみてください。
それからLoaded Configuration Fileが設定されるか確認してみてください。
会員
登録者: 11 2009
返信数: 8
有難う御座います。
C:\windows\php.iniのphp.iniをc:\PHPへ移動しphpinfo()で
確認しましたが特に変化はありませんでした。

Configuration File (php.ini) Path C:\WINDOWS
Loaded Configuration File (none)
会員
登録者: 8 2009
返信数: 103
phpをどのようにインストールしたのでしょうか?
こちらはphpをcgiとして動作するようにインストールしています。
変則的なので参考にならないかもしれませんが…。
バーチャルホストの設定は、はしょってます。


インストール手順
環境: Windows Vista sp1
・php-5.2.11-nts-Win32.zipをダウンロード
・伸張展開する
・中身を c:\usr\bin に移動
・ext フォルダの中身を c:\usr\lib\php\modules に移動
・php.ini-dist のファイル名を php.ini に変更
・php.ini の下部に以下を追記

[php]
magic_quotes_gpc = Off
short_open_tag = Off
output_buffering = Off
register_globals = Off
cgi.fix_pathinfo = 1
post_max_size = 10M
upload_max_filesize = 10M
extension_dir = "/usr/lib/php/modules"
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mcrypt.dll
;使用するdllをここに追記

[Session]
session.save_path = "/tmp"
session.use_cookies = 1
session.auto_start = 0
;session.cookie_secure = 1
session.entropy_length = 32
;session.entropy_file = /dev/urandom
session.use_trans_sid = 0
session.hash_function = 1

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = utf-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = utf-8,sjis,euc-jp,jis,ascii


・バーチャルホストの設定
<VirtualHost *:80>
# hosts の編集が必要
ServerName domain.local
# ServerAlias www.domain.local
# SuexecUserGroup user user
UseCanonicalName Off
DocumentRoot /home/user/public_html
# ここに追加のバーチャルホスト設定

# CGIとphpの設定
ScriptAlias /cgi-bin/ /home/user/public_html/cgi-bin/
<Directory "/home/user/public_html/cgi-bin">
Options SymLinksIfOwnerMatch
AllowOverride None
Order allow,deny
Allow from all
</Directory>

AddHandler application/x-httpd-php-cgi .php
Action application/x-httpd-php-cgi /cgi-bin/php-cgi

</VirtualHost>


・php-cgiの設定
c:\home\user\public_html\cgi-bin\php-cgi
#!/usr/bin/php-cgi.exe



これでphpのインストールは終了です。

c:\home\user\public_html\info.php
<?php
phpinfo();
?>

ブラウザからアクセスすると
Loaded Configuration File C:\usr\bin\php.ini
となります。

php.iniをphp-cgiと同じフォルダに置くと
Loaded Configuration File C:\home\user\public_html\cgi-bin\php.ini
となりバーチャルホスト毎にphp.iniの設定を変更できます。
会員
登録者: 11 2009
返信数: 8
nulla様ご返信有難う御座います。

早速確認しcgi.fix_pathinfo = 1のコメントを外した所、正常に処理を行う事が出来ました。
本当に有難う御座います。

別件になりますが、当方はインストールの際ext フォルダの中身を別のフォルダに
コピーをしておりません。
上記のc:\usr\lib\php\modulesは何のフォルダなのでしょうか?
追記:php-5.2.11-nts-Win32.zipを展開したファイルをPHPと言うフォルダ名に変更し
Cドライブ直下に移動、その後PHP直下のphp5ts.dllをC:\WINDOWS\system32にコピーしております。
会員
登録者: 8 2009
返信数: 103
こんばんは、
無事に動作したみたいでよかったです。

> 上記のc:\usr\lib\php\modulesは何のフォルダなのでしょうか?
Linux系の運営管理をしておりますのでwindowsの設定は、ある程度互換があるようにしています。
ですので深い意味はありません。
CentOSのremi版ですと /usr/lib/php/modules ディレクトリだったのでwindowsもそれにならったのです。
会員
登録者: 1 2010
返信数: 1
:o もう解決してしまったようですが、
同じくmb_系の関数がundefinedになってつまずいてしまった者です。

偶然この掲示板を見つけて助かりました!!

ありがとうございます!
お礼と報告まで。


こちらの環境:
Windows XP SP3
PHP 5.2.12
Apache HTTP Server 2.2

同じように、C:\windows\php.iniのphp.iniをc:\PHPへ移動して、
php.iniのcgi.fix_pathinfoをコメントアウトしてcgi.fix_pathinfo = 1に設定したら使えるようになりました。

ページ: 1

日本PHPユーザ会 掲示板 » PHP 5 » mb_convert_encoding使用時のエラー

日本PHPユーザ会 掲示板 は UseBB 1 フォーラムソフトウェア を使用しています