PHP 5.3.x で推奨されない機能 PHP 5.3.0 では新しく二つのエラーレベルが加わりました。 E_DEPRECATED と E_USER_DEPRECATED です。 E_DEPRECATED エラーレベルは、 特定の機能が推奨されないことを示すのに使います。 E_USER_DEPRECATED エラーレベルは、ユーザー定義のコードで推奨されない機能、たとえば E_USER_ERROR や E_USER_WARNING のようなものを示すのに使います。 INI ディレクティブで推奨されないものは以下の通りです。 これらのひとつ以上を有効にすると、起動時 E_DEPRECATED エラーが発生します define_syslog_variables register_globals register_long_arrays safe_mode magic_quotes_gpc ma
症状 PHP5.3.0以上でMBFPDFを使用してPDFを作成しようとすると、「ファイルが破損している」または「正しくエンコードされなかった」というエラーが出て、PDFが表示されなくなる。 原因 PHPでは、バージョン5.3.0以降マジッククォート機能を非推奨としており、これらの関数を使用すると警告が表示されるようになった。MBFPDFを使用している場合、この警告がPDFファイルに直接書き込まれてしまうため、不正な文字列がファイルの破損とみられ、正しく表示されなくなってしまったものと思われる。 解決法 もともとMBFPDFではマジッククォート機能を使用しておらず、一時的に機能を無効化するために関数を呼び出しているだけであるため、この関数をそのままコメントアウトさせると正常に動作する。 具体的には「mbfpdf.php」をテキストエディタで開き、下記の部分をコメントアウトする。 465 //
PHP4の環境で、どうしてもPHP5以降の関数を使いたい場合があります。 たとえば、使いたいフレームワークやライブラリがPHP5に依存した関数を使っているような場合です。 最近弊社でもPHP4環境であるフレームワークを導入する際に、 PHP5で追加されたjson_encodeとjson_decodeをフレームワークが使用していて、 エラーが発生していました。 エラーが発生していたのはこの部分だけなので、フレームワークのjson関係の部分を手直しする というのも1案あります。 ですがフレームワークのソースに手を入れてしまうと、今後のフレームワークのバージョンアップに 対応できません。 そこで調べたところ、便利なファイルを見つけました。 upgrade.php このファイルを if (PHP_VERSION <"5.0.0") { include("upgrade.php"); } とい
第3引数を指定していない場合の影響前述のように、htmlspecialchars関数の第3引数を指定していない場合、PHP5.3までは、文字エンコーディングがISO-8859-1が指定されたとみなされます。この場合、入力内容にかかわらず不正な文字エンコーディングと判定されることはありません。したがって、文字エンコーディングのチェックが働かない代わりに、エラーになることもありませんでした。 これに対して、PHP5.4の仕様により文字エンコーディングがUTF-8とみなされた場合に、Shift_JISやEUC-JPの2バイト文字が入力されると、高い確率で「UTF-8として不正」というエラーになり、htmlspecialchars関数の出力は空になります。つまり、プログラムが正常に動作しません。 htmlspecialchars関数の第3引数を指定しておらず、内部文字エンコーディングがShift_
symfonyを試す過程で、php5-sqliteをaptitudeでインストールしたところ、以下のような現象が起きた。 $ sudo aptitude install php5-sqlite $ php PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626/sqlite.so' - /usr/lib/php5/20090626/sqlite.so: cannot open shared object file: No such file or directory in Unknown on line 0 どうやら、/etc/php5/conf.d/sqlite.ini でsqlite.soファイルを指定していているのが原因のよう。 ちなみに、同じディレクトリにはsqlite3.in
こんどは、PHP5.1.2 の fgetcsv() ではまった… fgetcsv() で読み込もうとする csv ファイルの文字コードと、PHP の内部文字エンコーディングが違う場合、fgetcsv() で読み込むと、どうしても文字が腐る … (PHP4 時代[少なくとも 4.3 系統は]は、問題なかった) 【以下みたいな場合】 CSV: Shift_JIS (Windows の Excel で作成されることを想定するとこれ) PHP内部コード: UTF-8 (最近は自分プロジェクトはこれで統一している) で、試しに、CSV のエンコードを UTF-8 にして試すと、うまくいんだよなぁ。 色々調べると、PHP5 からどうやらロケール? に左右されるらしい… (参照URL: PHP-devML) ただ、上記 ML のスレッドでも解決方法(いや解決してないようだが)を試しても、やっぱりダメ。
Posted on 7月 19, 2006 Filed Under PHP | CSVのインポート機能を持ったシステムをPHP4環境からPHP5環境へ移行したら、 なぜかCSVデータを正しく読み込んでくれない。っていうか一文字目が文字化け。 超悩んだあげくぐーぐるさんで検索しても以下のような記事しかみつからず。 [PHP-dev 1205] PHP5のfgetcsv()関数について 人力検索はてな - PHP4からPHP5へソースの移(長いので略) csvファイルを読み込むと1バイト目の日本語が文字化け 3つ目の掲示板のyossyはあたくし自身なんですが・・・。 setlocaleとかいろいろ試してもしても結局読み込まれるCSVの文字コードは ほとんどSJISなせいなためかなんだかうまくいきません。 ちなみに検証環境はほぼFedoraCore4のデフォルトです。 PHPは5
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く