PHP警告:文件上传错误-无法在“未知”中创建临时文件
这是一个经常发生的问题。
我们的服务器具有PHP FPM,出于某些奇怪的原因,此问题一直在发生:
Got error 'PHP message: PHP Notice: Unknown: file created in the system's temporary directory in Unknown on line 0\nPHP message: PHP Warning: File upload error - unable
to create a temporary file in Unknown on line 0\n'.
我们的用户php conf首次发生时如下所示:
[USER]
user = $pool
group = $pool
listen = /usr/local/php72/sockets/$pool.sock
listen.owner = $pool
listen.group = apache
listen.mode = 660
pm = ondemand
pm.max_children = 100
pm.process_idle_timeout = 20
php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f USER@domain.tld
php_admin_value[session.save_path] = /home/USER/tmp
php_admin_value[open_basedir] = /home/USER/:/tmp/:/var/tmp/:/usr/local/php72/lib/:/usr/local/php54/lib/:/usr/local/php55/lib/:/usr/local/php56/lib/:/usr/local/php70/lib/:/usr/local/php71/lib/:/usr/local/php72/lib/:/usr/local/lib/php/
php_admin_value[mail.log] = /home/USER/.php/php-mail.log
security.limit_extensions = .php .php52 .php53 .php54 .php55 .php56 .php60 .php70 .php71 .inc .php72
人们认为,实际的解决方法是在用户php fpm conf中添加tmp变量:
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
重新启动php-fpm,该问题一开始似乎已经解决。但是,我们的网站仍然无法上传文件。
临时修复程序似乎重新启动了php fpm。但是,一段时间后,问题再次发生。 conf仍然具有/ tmp变量。
我们在所有可以找到的php.ini中添加了upload_tmp_dir = /tmp
,这也是一个临时解决方案。
这已经在具有多个网站的多个共享和专用服务器上发生。
我在测试服务器上进行了测试:
sys_get_temp_dir()
:给出
/tmp
ini_get('upload_tmp_dir')
:没有任何价值:
string(0) ""
但是我的测试文件上传正常
使用的测试代码来自:https://www.w3schools.com/php/php_file_upload.asp
PrivateTmp=true
在PHP FPM实例上设置为true。这应该没有任何效果,因为我们将/ tmp作为指定目录...?
有什么方法可以永久解决此问题?