ようこそ!逆襲のニートブログへ

ブログ内検索

最近の記事

はてなブックマーク数

この日記のはてなブックマーク数

カテゴリー

月別アーカイブ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PHP Deprecated: Function split() is deprecated

WebサーバーのPHPをアップグレードしたら、PukiWikiが表示されなくなった。
原因を調べたら、PHPの仕様変更に伴うエラーだった。

・画面が真っ白
・500 Internal Server Errorが出る
とか。

●デバッグの基本方針
→画面が真っ白な場合、デバッグはhttpd(Apacheのmod_php)を経由せずに、直接CLI上で行なえばOK。

# php -v


というコマンドを打って、PHP CLI版が使えることを確認する。

●エラーの捕捉
PHPのエラーメッセージを最も詳細なレベル(E_STRICT)にする。

●コマンドラインで実行

# cd /var/www/html/pukiwiki
# php index.php


で、エラーメッセージが出たら、それをひたすら修正していく。

●PukiWiki Plus!でエラー
PukiWikiもシコシコデバッグすればいいのだが、PukiWiki Plus!を使っているサイトがあった。

PukiWiki Plus!の場合は、PukiWikiよりも修正箇所が多いかも?
=追加された機能の分だけ、修正範囲が広い?

●PHP Deprecated: Function split() is deprecated
PukiWiki Plus!をPHP5.4でデバッグしていると、

PHP Deprecated: Function split() is deprecated in /var/www/html/pukiwikiplus/lib/lang.php


こんなエラーメッセージが出る。

split()という関数を使っている部分があって、これがPHP5.3以降非推奨になってると。

どうやって修正すればいいか、解説しているページがあった。

Deprecatedの修正例(POSIX) - [PHP + PHP] ぺんたん info

PHP5.3以降ではPOSIX正規表現の関数は将来 PHPに実装されなくなるため非推奨となっています。 POSIXの関数を使用した場合、次のようなDeprecatedの警告エラーが出ます。

Deprecated: Function split() is deprecated

POSIXPCRE正規表現を使わないならString 関数
split()preg_split()explode()


split()
preg_split()で置き換え可能

$string = 'aaa:bbb:ccc';
$arr = split(":", $string);

$string = 'aaa:bbb:ccc';
$arr = preg_split("/:/", $string);



PHP: split - Manual

(PHP 4, PHP 5)
split — 正規表現により文字列を分割し、配列に格納する

警告
この関数は PHP 5.3.0 で 非推奨となりました。 この機能を使用しないことを強く推奨します。

ヒント
split() は PHP 5.3.0 以降で非推奨になりました。この関数のかわりに preg_split() を使うことを推奨します。 正規表現の威力が必要ないのであれば、 explode() を使用するほうがより高速です。これは正規表現エンジンの オーバーヘッドを受けません。



PHP: preg_split - Manual

(PHP 4, PHP 5)
preg_split — 正規表現で文字列を分割する



split()関数は、preg_split()関数に置き換えればOKと。

例えば、
$_c = split('_', $language);
は、
$_c = preg_split('/_/', $language);
という具合に置き換えればOK。

●PukiWikiプロジェクト
誰か、PukiWikiをMVCフレームワークで作り直して欲しい。
→俺がやってみるかw
関連記事

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURL:
http://gooddays1.blog37.fc2.com/tb.php/997-428f00d7
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。