
Ubuntu日本語フォーラム
ログインしていません。
Ubuntu上でPHPで作られたスクリプトを利用して、サーバーを構築しており、質問があります。よろしくお願いします。
これまで、RedHat系の環境で利用していたPHPスクリプトを利用して、ファイルを受け取る(アップロード)仕組みを作っています。そこでは漢字のフォルダ名を持つフォルダを作りここにたくさんのファイルを保存して、これをSambaで公開して、まとめて受け取る仕組みです。
現在のSambaの設定は、Windowsから日本語のファイル名を受取表示できる状態になっています。しかし、このPHPのスクリプトから作成したフォルダ名が文字が化けして読めないのです。漢字コードが合わないと思い、漢字コードの設定などを行ったのですが、うまくできません。
確認すべき点などありましたら、ご助言をお願いします。
オフライン
こんなフォームから送ったファイルを
<form method="post" action="index.php" enctype="multipart/form-data" name="myform"> FILE <input type="file" name="attach"><input type="submit" name="OK" value="OK"></form>
こんな感じで受けてみました。
<?php $dirname = "ほげ"; if (is_uploaded_file($_FILES['attach']['tmp_name'])){ mkdir($dirname); move_uploaded_file($_FILES['attach']['tmp_name'], $dirname . "/" . $_FILES['attach']['name']); } ?>
問題なく日本語のファイルを送信できます。ディレクトリも作成できます。
ひょっとして PHP スクリプト内に日本語でディレクトリ名が書き込まれていて、かつそれが EUC で出力されていたりしないでしょうか?
RedHat から持ってきたスクリプトということで、そこが気になります。文字化けしているディレクトリは、Ubuntu のファイルブラウザではどのように表示されますか?
オフライン
ご丁寧なご回答、ありがとうございます。ご指摘のように、以前はRedHat系(WhiteBoxLinux?)で動作しており、EUCの状態で動作していていたものと思われます。スクリプトの中身はこれから確認しようと思いますが、現状の表示は、次のようになっています。[1]®ìmFÌtH_ì¬ (Windowsのフォルダ名をコピーしたものです)
本来は、[1]動作確認のフォルダ作成、となって欲しいものです。
なお、漢字コードの設定などしない状態で、Windowsからのファイル名は、正しく表示されています。
オフライン
mizuno による投稿:
ひょっとして PHP スクリプト内に日本語でディレクトリ名が書き込まれていて、かつそれが EUC で出力されていたりしないでしょうか?
ディレクトリ名は、ユーザーから入力されるもので、ウエブ上では、正しく表示されています。なお、この名称は、MySQLに格納して、それを引き出して利用しているものと思います。
オフライン
mizuno による投稿:
ひょっとして PHP スクリプト内に日本語でディレクトリ名が書き込まれていて、かつそれが EUC で出力されていたりしないでしょうか?
スクリプトを確認したところ、関係すると思われるがわかりました。
//エンコード
$dir_pass = mb_convert_encoding($dir_pass,'UTF-8');
…
if (mkdir ($dir_pass , 0700)){
if (copy($textfile, $dir_pass . "/" . $filename)) {
echo "ファイルをアップロードしました。";
これを見る限りでは、UTF-8にして、ディレクトリを作成しているように思われます。
オフライン
PHPでわざわざUTF-8に変換してるってことはMySQL内では多分違うエンコードになってるんですよね。
そのあたりを確認してみてはどうでしょうか。
あとはSambaの設定あたりでしょうか。
オフライン
皆さんのご助言をいただき、作業を整理して試したところ、表示ができました。
まず、phpのスクリプトでは、以下のようにEUC-JPにしておき、
$dir_pass = mb_convert_encoding($dir_pass,'EUC-JP','auto');
smb.confの漢字コード設定は、以下のようにしています。
[global]
unix charset = CP932
dos charset = EUCJP-MS
display charset = CP932
これが正解なのかわかりませんが、Samba経由でWindowsで表示できます。
皆さんのご助言のおかげです。本当に、ありがとうございます。
オフライン