PHPのドキュメントにあるfilesize関数に書いてあることだけど、以外と落とし穴なので記事に。
$file_size = filesize($path);
とすると、返り値が32ビット符号付整数なので、2GBより大きいファイルサイズを取得すると、負の数で返ってきます。
$file_size = sprintf("%u", filesize($path));
とすれば解決します。
ただし、もともと32ビットなので、4GBより大きいファイルは正常に取得できません。
$file_size = filesize($path);
とすると、返り値が32ビット符号付整数なので、2GBより大きいファイルサイズを取得すると、負の数で返ってきます。
$file_size = sprintf("%u", filesize($path));
とすれば解決します。
ただし、もともと32ビットなので、4GBより大きいファイルは正常に取得できません。