LoginSignup
5
3

More than 5 years have passed since last update.

CentOS7で/tmpや/var/tmpに保存したファイルが見えなくて悩んだ

Last updated at Posted at 2017-12-06

事象

WEBアプリケーションでファイルを/tmpに保存してダウンロードさせる機能を作ったのですがその際にサーバーに接続して/tmpの中身を確認しても保存したものが表示されないということがありました。
アプリケーションからはファイルの存在は確認できるが、サーバーに接続して/tmpを確認すると存在しないという感じです。

原因

インフラの方に聞いてみたところ、CentOS7からsystemdになった影響で/tmpはサービス毎に実体が異なるようになったということでした(PrivateTmpという機能らしいです(デフォルトで有効))。
WEBアプリケーションで/tmpに保存したものはWEBサーバーのサービスから保存したものになるのでそのサービスの/tmpに保存されるということでした。

更に確認すると/tmpではなく以下に保存されていました。

/tmp/systemd-private-995039d4086a4e60b901dbfe2da2d4dd-php-fpm.service-XDbfC3/tmp/

対応

PrivateTmpを無効にするか、アプリケーション専用のtmpフォルダを作ってそこに保存する。
後者の場合は/tmpの自動削除が機能しないので自動削除を設定するか、基本一時保存のものなので使い終わったら削除することを忘れない等の対策が必要です。

メモ

CentOS7からsystemdになったのでtempwatchがなくなってsystemd-tmpfiles-clean.timerになっています。

以下のコマンドでactiveかどうか確認できます。

systemctl status systemd-tmpfiles-clean.timer
5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3