Results 1 to 5 of 5

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

  1. #1
    Join Date
    Mar 2014

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

    This is a problem that keep 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 = $pool
    group = $pool
    listen = /usr/local/php72/sockets/$pool.sock
    listen.owner = $pool = 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
    php_admin_value[session.save_path] = /home/DAUSER/tmp
    php_admin_value[open_basedir] = /home/DAUSER/:/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/DAUSER/.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 alse 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


    `ini_get('upload_tmp_dir')`: gives no value:

    `string(0) ""`

    But my test files uploaded fine

    Test code used from:

    `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...?

    - CentOS Linux release 7.5.1804 (C
    - DirectAdmin server
    - PHP-FPM
    - PHP 7.2.10 (FPM)

    ----- -----

    Is there any way how to permanently fix this issue? The keeps happening on multiple server of our customers, and we can't just keep restarting PHP-FPM
    Last edited by dhm; 11-06-2018 at 12:54 AM. Reason: added further info

  2. #2
    Join Date
    Apr 2005
    GMT +7.00

    Do you have suhosin with suhosin_php_uploadscan enabled?

    grep suhosin /usr/local/directadmin/custombuild/options.conf
    Try and rebuild:

    ./build update
    ./build php
    ./build clamav
    ./build suhosin
    and check, post results of

    grep ^PrivateTmp --color /etc/systemd/system/*.service
    Regards, Alex G.

    - You can hire me on to work on your server
    - Follow and like @Poralix on Facebook

  3. #3
    Join Date
    Mar 2014
    Here is my settings:

    grep suhosin /usr/local/directadmin/custombuild/options.conf

    I've updated PHP, no clamav/suhosin

    ./build update
    ./build php


    grep ^PrivateTmp --color /etc/systemd/system/*.service

  4. #4
    Join Date
    Apr 2009
    Perhaps it is a bug relateted to this new feature/behaviour:

    Personally I have disabled the new feature/behavior, so that it work the same way as before DirectAdmin 1.53.1. To disable and see if that solves the problem, then do what it says at the bottom of the feature link:

    At any time, you can disable the feature by adding:
    to the directadmin.conf, restart DA, and also issue a config rewrite:
    cd /usr/local/directadmin/custombuild
    ./build rewrite_confs

  5. #5
    Join Date
    May 2013
    The Hague area, The Netherlands
    Since some time I get errors adding modules to Joomla. The message is that the temporary PHP folder is not set.

    Adn that referst to my PHP 7.2.12 setting upload_tmp_dir, which is not set.

    I haven't had this error in years, and I think not even when I started with PHP 7.2. But now the message is there. And reading the initial topic it feels familliar or somehow related.

    I thought my Open Basedir should take care of this empty setting, but it seems not working.

    The 7.2 path is in my open basedir setting: /usr/local/php72/lib/:/usr/local/lib/php/

    VPS, CentOS 7

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts