• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPバージョンが異なる時の関数の働き)

PHPバージョンの違いによる関数の働きと文字化けの問題について

このQ&Aのポイント
  • PHPバージョンが異なると、関数の働きに違いが生じることがあります。特に、$_SERVER['DOCUMENT_ROOT']の値が異なる場合、プログラムが正常に動作しない可能性があります。
  • また、php5.1から5.3に移行した際に、文字化けの問題が発生することがあります。特に、UTF-8で表示されていた文字列が正常に表示されなくなり、文字化け(???)が発生することがあります。
  • 原因としては、サーバーの設定や文法の違い、ファイルの文字コードの変更などが考えられます。具体的には、$_SERVER['DOCUMENT_ROOT']のルートの値末尾の変化や、htaccessの記述の変更が影響している可能性があります。

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.3

> $_SERVER['DOCUMENT_ROOT']で得られるルートの値末尾が5.1では”/”だったものが無しに変わったのか?置いているサーバーで働きが異なるのか。それとも文字化けと何か関係している可能性があるのか。 ↓これの影響ですかね 「PHP 5.2.x から PHP 5.3.x への移行」>「下位互換性のない変更点」 http://php.net/manual/ja/migration53.incompatible.php 『SplFileInfoクラス と他のディレクトリ関連クラスは、 末尾の / を除去するようになりました。 』 > 文字化けについて考えられる原因。 php.iniの設定が前のサーバと異なっていると言う事はないでしょうか。

picicate
質問者

お礼

ご回答大変ありがとうございました! ああ、やっぱりバージョンで変更あったんですね。 大変助かりました。 文字化けについてもどうもini設定に関連していそうなのでその方向で調べてみます。 他の方もありがとうございました!

その他の回答 (2)

回答No.2

もとのサーバと現サーバでのバージョン以外の設定は確認したの? php.iniだったり

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

$_SERVER['DOCUMENT_ROOT'] はサーバの設定ファイルの値です。 http://php.net/manual/ja/reserved.variables.server.php >現在実行されているスクリプトが存在するドキュメントルート ディレクトリです。 >サーバーのコンフィグレーションファイルで 定義されています。 一般的には最後に / があるかどうかphpスクリプト側で確認して(最後の1文字を切り出して / と比較して)から使います。 >今までは正常に表示されてたのに日本語が???に化けた。 ブラウザが正しいcharset(utf-8)で認識していないということでしょうか?htmlにはmeta要素でcharset指定がありますか(phpが返すhtmlソースでも同じ)。サーバから自動で返るcontent-typeは「charsetがない」のが普通なのですが、レスポンスヘッダはどうなっていますか? (meta要素を入れ忘れたときのために)自分がロリポップで動かしているphpスクリプトは、全部最初に header('Content-type: text/html; charset=UTF-8'); を書いています。

関連するQ&A