如何自动清理 /tmp 中失败的 PHP 上传?

如何自动清理 /tmp 中失败的 PHP 上传?

如何自动清理失败的上传? PHP 将它们存储在其中/tmp,并且所有文件名看起来都像这样phpAbCDeF(基本上是 php 后跟 6 个字符)。

我知道我可以使用以下命令:

find /tmp -name php\*

但这也删除了我不想删除的以 php 开头的其他临时文件(由其他进程创建)。

请提出一个解决方案。

答案1

这取决于您的文件的命名方式。以下是一些建议:

  1. 删除名称php后面紧跟 6 个字符的所有文件:

    find /tmp -type f -name 'php??????' -delete
    
  2. 删除所有名称以php和 开头的文件空的:

    find /tmp -type f -name "php*"  -empty -delete
    
  3. 更好的方法是编辑服务器的php-ini文件并设置变量upload_tmp_dir。这样,您就可以删除该目录中的所有内容。例如,如果您在以下位置设置php.ini

    upload_tmp_dir=/tmp/phptmp
    

    然后,您可以简单地从文件夹中删除所有文件:

    rm  /tmp/phptmp/*
    

答案2

如果这是您编写/可以修改的应用程序,我建议register_shutdown_function您在创建临时文件时使用。这样,unlink即使您的脚本被中断,您也可以。

相关内容