Получено сообщение об ошибке 'PHP: Уведомление PHP: Неизвестно: файл, созданный во временном каталоге системы в поле Неизвестно в строке 0 \ nPHP сообщение: PHP Предупреждение: - PullRequest
0 голосов
/ 31 октября 2018

PHP Предупреждение: ошибка загрузки файла - невозможно создать временный файл в Unknown

Эта проблема постоянно повторяется.

У нас есть серверы с 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

Считалось, что реальное исправление заключается в добавлении переменных tmp в пользовательский php fpm conf:

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 имеет значение true для экземпляра PHP FPM. Это не должно иметь никакого эффекта, потому что мы даем / tmp как указанный каталог ...?

Есть ли способ как навсегда решить эту проблему?

  • CentOS Linux выпуск 7.5.1804 (C
  • Сервер DirectAdmin
  • PHP-FPM
  • PHP 7.2.10 (FPM)
...