4

PHP Warning: File upload error - unable to create a temporary file in Unknown

This is a problem that keeps recurring.

We have servers with PHP FPM and for some strange reason this problem keep happening:

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'.

Our user php conf looks like the following when it first happened:

[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

It was thought that the actual fix was, by adding the tmp variables in the user php fpm conf:

env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

Restart php-fpm, the problem seemed fix at first. But, our websites still cannot upload files.

The temporary fix seems to restart php fpm. But, after a while the problem happens again. And the conf still has the /tmp variables.

We added, in all the php.ini we could find, the upload_tmp_dir = /tmp, and that also was a temporary fix.


This has happened on multiple shared and dedicated servers, with multiple websites.

I did a test on our test server: sys_get_temp_dir(): gives the

/tmp

ini_get('upload_tmp_dir'): gives no value:

string(0) ""

But my test files uploaded fine

Test code used from:https://www.w3schools.com/php/php_file_upload.asp

PrivateTmp=true is set to true on the PHP FPM instance. This should not have any effect, because we are giving /tmp as the specified dir...?

Is there any way how to permanently fix this issue?

  • CentOS Linux release 7.5.1804 (C
  • DirectAdmin server
  • PHP-FPM
  • PHP 7.2.10 (FPM)
blade19899
  • 727
  • 1
  • 8
  • 32
  • I think the php.ini is a permanent solution – Lithilion Oct 31 '18 at 10:32
  • @Lithilion, thought that too. But, just double checken and all of the php.ini files have the `upload_tmp_dir = /tmp` defined, and yet still had to restart php fm again, to get it to work... – blade19899 Oct 31 '18 at 10:36

0 Answers0