RedHatLinux4 update6 + Apache2.2.8 + php5.2.5でプログラムを作成しております。
//server/share/hogehoge を /opt/lampp/htdocs/share にcifsマウントして、サーバの"hogehoge"ディレクトリにある"補毛補毛"というディレクトリにアクセスできるようphpに記述したいのですが、うまくいかずに困っています。
/opt/htdocs/test.php
-------------------------------------------------------------------
$glob="./hogehoge/補毛補毛";
chdir($glob); //カレントディレクトリ移動
foreach (glob("*.xls") as $filepath) {
echo "$filepath size " . filesize($filepath) . "\n";
}
-------------------------------------------------------------------
具体的には上記のようなソースを書いたのですがうまく動きませんでした。./hogehoge/までなら動くのですが、そこに2バイト文字を含めるとうまく動きません。
どうにかしてうまく動かす方法はありませんでしょうか。サーバ側のディレクトリ名を変更することはできません。
ご回答、宜しくお願いいたします。
No.2ベストアンサー
- 回答日時:
※ 基本的なことを書きますが、気分を害されないようお願いします。
まず日本語を扱うのが前提であれば mbstring は利用可能になっています
でしょうか?
> ローカルの端末やsshでは参照可能です。
> 2バイト文字などのファイル名も正常に表示されます。
echo $LANG
を実行するとどうなっていましたかでしょうか?
# Redhat4 のデフォルトは ja_JP.UTF-8 だと思いますが。
> しかし、phpだとうまくいきません。
PHP スクリプトのファイル名の文字のエンコードとシステムの文字エンコードが
合ってないという意味はご理解されていますでしょうか?
cat /opt/htdocs/test.php
とすると PHP スクリプトの日本語が化けませんか?
仮りに echo $LANG の時の結果が ja_JP.UTF-8 だとして
PHP スクリプトファイルの文字エンコードが EUC-JP だとすると
システムの文字エンコードと一致しないで見つけられないことになります。
言い替えれば、この場合は PHP スクリプトを UTF-8 でエンコードして
あれば表示が可能だと言うことです。
EUC-JP の場合の方法はこんな感じかと思われます。
$glob="./hogehoge/補毛補毛";
mb_language("Japanese");
mb_internal_encoding("EUC-JP"); // PHP スクリプトファイルの文字エンコード
$glob=mb_convert_encoding($glob, "UTF-8"); // システムの文字エンコード
chdir($glob); //カレントディレクトリ移動
foreach (glob("*.xls") as $filepath) {
$disp_filepath=mb_convert_encoding($filepath, "EUC-JP","UTF-8"); // 表示用に変換
echo "$disp_filepath size " . filesize($filepath) . "\n";
}
Windows などで PHP スクリプトを編集していた場合は Shift_JIS になっていることが
あるので、その場合は Shift_JIS または SJIS を指定します。
$glob="./hogehoge/補毛補毛";
mb_language("Japanese");
mb_internal_encoding("SJIS"); // PHP スクリプトファイルの文字エンコード
$glob=mb_convert_encoding($glob, "UTF-8"); // システムの文字エンコード
chdir($glob); //カレントディレクトリ移動
foreach (glob("*.xls") as $filepath) {
$disp_filepath=mb_convert_encoding($filepath, "SJIS","UTF-8"); // 表示用に変換
echo "$disp_filepath size " . filesize($filepath) . "\n";
}
蛇足ですが cifs や smbfs でマウントした場合 mount に指定する iocharset に
よっても変わりますが、ssh やローカル端末で化けないのであれば変更する必要は
ありません。 変更しないほうが無難かと思われます。
ご回答有り難う御座います。
早速、試してみましたところ解決いたしました。
低レベルな質問をして申し訳御座いません。
また、質問する機会がございましたら宜しくお願いいたします。
失礼いたします。
No.1
- 回答日時:
端末のシェル(bashなど)上で ls /opt/lampp/htdocs/share を実行した場合に漢字などの
ファイル名の表示は正常でしたか?
> そこに2バイト文字を含めるとうまく動きません。
ディレクトリ名で指定している文字エンコードとが合致しないだけかと思われますが?
またディレクトリ名で扱う文字エンコードをお使いの環境変数 LANG と合わせても駄目なのでしょうか?
# 私の環境で試した場合はエンコードが合えば可能でした。
この回答への補足
ご回答ありがとうございます。
ローカルの端末やsshでは参照可能です。2バイト文字などのファイル名も正常に表示されます。しかし、phpだとうまくいきません。
下記のようなエラーメッセージが表示されてしまいます。
Warning: chdir() [function.chdir]: No such file or directory (errno 2) in /opt/lampp/htdocs/kanri/test.php on line 13
chdirがエラーを吐いているようです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPプログラムの間違い 1 2022/10/06 14:33
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- UNIX・Linux ubuntuのサーバー(virtual box)が、再起動するとデータが消えてしまいます。 4 2022/04/27 21:29
- UNIX・Linux JSLinuxについて。 Linuxのこの手順のプログラミングは合っているでしょうか。 ①ホームディ 2 2022/06/20 15:33
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
- Windows 10 指定したファイルを任意の範囲のディレクトリ内に上書き保存したい 1 2022/11/24 10:42
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/20 14:46
- その他(プログラミング・Web制作) 図に示す階層構造で,現在のディレクトリ(カレントディレクトリという)が*印のディレクトリであるとき, 2 2022/11/16 10:55
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
BASIC認証のフォームをデザイン...
-
配列の値の更新方法について
-
phpでcookieがうまく保存されない
-
PHP8を使うと、大量のWarningが...
-
PHPを使って、別サイトの一部を...
-
PHPで画像の渡しが上手く行きま...
-
PHP MySql ページング
-
phpinfo で MySQL のバージョン...
-
ワードプレスサイト PHP8.0.25...
-
php 入力画面から確認表示画面...
-
Postgresの特定のカラムからス...
-
htmlspecialcharsが機能してい...
-
PHPSpreadsheetを使って関数を...
-
PHP echo バックスラッシュの使...
-
php エラー
-
PHP & MySQL: Server-side Web ...
-
1 OR 1=1 は どんな論理(約束事...
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
-
返信機能のツリー構造の深さを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
$str=preg_replace('/\\u3000/'...
-
PHPの文字化けした文字だけ削除...
-
phpのhex2binについてphpで、ut...
-
ajax 文字化け euc-jp
-
エンコーディングについて
-
CSVファイルの読み込みで日本語...
-
XML出力時の日本語一部文字化け
-
i18n_convert と mb_convert_e...
-
mysql utf8、php・euc-jp で出...
-
文字エンコーディングについて質問
-
PHPでCSV出力時の文字化け(一部)
-
PHPフォーム→PHP確認画面で...
-
PHPExcelで日本語(漢字)ファ...
-
文字化け
-
文字化けにどう対処したら・・...
-
PHPの文字コード
-
文字コードを変えるとPHPの...
-
scandir関数取得結果の文字化け
-
euc-jpからutf-8の文字コード変...
-
php.iniを変更したのにUFT-8が...
おすすめ情報