システムエンジニアの徒然日記

PHPとJavaScriptとJAVA以外も愛していく

PHPでfilesizeを使用していたらwaringで怒られた

      2015/11/04


Severity: Warningで怒られる

filesizeを利用しようとしたら以下のエラー分が表示された。

warningが出た理由

filesizeの引数に設定するのはファイルパス。
自分が設定していたのはファイルのURLだった。
URL指定でファイルのデータが取得できなかったようで、warningが表示されてしまったようだ。

修正方法

上記で言ったとおり、filesizeの引数にファイルがあるフルパスを指定してあげればいいのだ。

$_SERVER[‘DOCUMENT_ROOT’]はルートディレクトリを取得することができます。
これでファイルへのフルパスを指定することができます。
結果ファイルのサイズを取得することができました。

滅多に使わなかったので、こんなことではまるとは思わなかったです。

おまけ

filesizeで取得するとバイト数で取得されます。
表示するにはやはりKByteとかにしたいです。

キロバイト表示

以下でも同じ結果が得られます。

「$size >> 10」とやることで、シフト演算で10ビット右に移動します。
割り算的に言うと1024となるわけです。
ちなみに、シフト演算を行ったほうが速度が出ますが・・・この程度なら変わらないと思います。

小数点の丸め込み

割ったはいいものの、小数点がすごい出ます。ダサいです。
なので小数点を丸め込みたいです。

round($size, 2)とすることで、小数点2桁を丸め込みます。
これでキレイに表示されます。
roundには第三引数を指定できます。

PHP_ROUND_HALF_UPval が小数点第 precision 位の値になるように、 ゼロから離れる方向に丸めます。1.5 は 2 に、そして -1.5 は -2 になります。
PHP_ROUND_HALF_DOWNval が小数点第 precision 位の値になるように、 ゼロに近づく方向に丸めます。1.5 は 1 に、そして -1.5 は -1 になります。
PHP_ROUND_HALF_EVENval が小数点第 precision 位の値になるように、 次の偶数に丸めます。
PHP_ROUND_HALF_ODDval が小数点第 precision 位の値になるように、 次の奇数に丸めます。

 - PHP , , , ,