我在使用PHP上传文件时不断获取UPLOAD_ERR_NO_TMP_DIR

时间:2017-02-12 15:52:21

标签: php linux apache server fedora-25

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

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

我正在尝试上传一个6kB大的.docx文件,upload_tmp_dir中的php.ini设置为/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
    )
)

什么可能导致这个问题?

2 个答案:

答案 0 :(得分:2)

您需要检查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(仅适用于当前会话或所有时间),并且上述检查可以使用它。

答案 1 :(得分:1)

将临时目录放在/var/www/var/www/html

除此操作外,您还需要使用semanage授予Apache rewrite权限。