php - 使用 PHP 上传文件时,我不断收到 UPLOAD_ERR_NO_TMP_DIR

标签 php linux apache server fedora-25

我正在尝试使用 PHP 7.0.15 在 Fedora 25(32 位)上的 Apache 服务器上上传文件。

我收到UPLOAD_ERR_NO_TMP_DIR错误,即使我已经为上传目录设置了适当的(甚至超出了我应该设置的权限,但我目前正在本地工作)权限,并且我已将该目录的所有者更改为 apache。

我正在尝试上传 6kB 大的 .docx 文件,php.ini 中的 upload_tmp_dir 设置为 /home/temporary

ls -l 返回以下代码:

drwxrwxrwx.  2 apache root           4096 Feb 11 20:14 temporary

sys_get_tmp_dir() 返回正确的路径:/home/temporary

但我仍然收到错误 6

debug outputArray
(
[userfile] => Array
    (
        [name] => rus.docx
        [type] => 
        [tmp_name] => 
        [error] => 6
        [size] => 0
    )
)

什么可能导致此问题?

最佳答案

您需要检查 php.ini 中的一些内容。确保您点击了正确的 php.ini:

  • upload_tmp_dir:这是 PHP 上传时存储临时文件的目录。
  • open_basedir:限制PHP对指定路径及其子目录的读写权限操作。 确保 upload_tmp_dir 在此路径内!
  • post_max_size:调大以适应您上传的尺寸。
  • upload_max_filesize:允许的文件大小限制。

如果您想调整 tmp 目录设置,请尝试编辑您选择的 /etc/profile 或/etc/environment (仅适用于当前 session 或所有时间),并且上述检查适用。

关于php - 使用 PHP 上传文件时,我不断收到 UPLOAD_ERR_NO_TMP_DIR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42189738/

相关文章:

c - 使用 rtld/free loader/linkers 加载加密的共享对象

mysql - 在 Windows Server 上配置 wamp 服务器?

linux - Linux/Unix 中是否有一次注释掉多行的命令?

php - 显示错误数据的 mysql 代码问题

php - public 和 not function 的区别

php - 在 codeigniter mysql 中使用 where 条件获取空白页

c - GCC 为什么以及如何编译缺少 return 语句的函数?

apache - 如何使 mod_ssl 指向不同的 openssl 目录而不是 apache 中的默认目录?

java - 将 JSON 发送到 Java post 并显示信息

php - 使用 throttle 中间件在 laravel 中增加 X-RateLimit-Limit