php - 收到错误“PHP 消息:PHP 通知:未知:在系统的临时目录中创建的文件在第 0 行的未知\nPHP 消息:PHP 警告:
问题描述
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 作为指定的目录...?
有什么办法可以永久解决这个问题吗?
- CentOS Linux 发行版 7.5.1804 (C
- DirectAdmin 服务器
- PHP-FPM
- PHP 7.2.10 (FPM)
解决方案
推荐阅读
- node.js - 使用模拟/存根为给定方法在 mocha 中编写单元测试
- gradle - 使用 Java 模块构建 Gradle Kotlin DSL 多项目
- python - 如何在 Python 3.7 中读取时间序列数据
- ignite - Ignite 中的简单选择查询缺少行
- angularjs - AngularJS:ui-select接受字符串而不是数组
- python - “命令不同步;您现在无法运行此命令”在 django 模型上运行分页器时
- javascript - 函数的返回值无法正常工作。如何为函数 checkIfExist() 设置正确的返回值?
- linux-kernel - 如何仅在 linux 中的 udp 数据包上生成网络损伤
- amazon-web-services - AWS Cognito 验证码长度更改
- javascript - 为什么这个递归 javascript 函数表达式返回未定义?