PHPのtempnam()関数

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

tempnam

tempnam()関数。一時ファイル名を生成する関数ですが、ファイルのアップロードを行う際などに、よく使います。

しかし、このtempnam()関数は、環境がWindows + Apache + PHPの場合、正しく動作しません。

例えば、

このように指定すると、普通は「20121213_zNaT8G」のように作られるのに、Windows環境だと「20182DF.tmp」のように、接頭語が日付の形式にもなっていないし、「_(アンダーバー)」も入っていないし、ましてや最後に「.tmp」って拡張子まで付いてる・・・もはや使い物になりません。

それならということで、関数を作って、自前で一時ファイル名を作った方がいいんじゃないかと。

これで、指定した文字数を返してくれるので、あとは

とすれば、同じような一時ファイル名が返ってくるはず。

tempnam()のように、ディレクトリ内で重複しない様にチェックはしていないけど、日付とランダム文字列の組み合わせなら、よほどアクセスのあるシステムでもない限り重複はないでしょ。
それでも気になるなら、さらに

時分秒まで加えればさらに安心。

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。

コメントを残す

%d人のブロガーが「いいね」をつけました。