如何自动清理失败的上传? PHP 将它们存储在其中/tmp
,并且所有文件名看起来都像这样phpAbCDeF
(基本上是 php 后跟 6 个字符)。
我知道我可以使用以下命令:
find /tmp -name php\*
但这也删除了我不想删除的以 php 开头的其他临时文件(由其他进程创建)。
请提出一个解决方案。
答案1
这取决于您的文件的命名方式。以下是一些建议:
删除名称
php
后面紧跟 6 个字符的所有文件:find /tmp -type f -name 'php??????' -delete
删除所有名称以
php
和 开头的文件空的:find /tmp -type f -name "php*" -empty -delete
更好的方法是编辑服务器的
php-ini
文件并设置变量upload_tmp_dir
。这样,您就可以删除该目录中的所有内容。例如,如果您在以下位置设置php.ini
:upload_tmp_dir=/tmp/phptmp
然后,您可以简单地从文件夹中删除所有文件:
rm /tmp/phptmp/*
答案2
如果这是您编写/可以修改的应用程序,我建议register_shutdown_function
您在创建临时文件时使用。这样,unlink
即使您的脚本被中断,您也可以。