尽管临时目录存在,但无法在PHP中创建临时文件

时间:2014-09-16 20:21:55

标签: php

我制作了一个允许用户上传图片的网站。 当我调用$ _FILE变量以便将图像移动到另一个目录时,它什么都不做。使用print_r检查$ _FILE将显示下一个信息:

(
    [pic1] => Array
        (
            [name] => pic1
            [type] => 
            [tmp_name] => 
            [error] => 6
            [size] => 0
        )

)

错误6似乎是this

UPLOAD_ERR_NO_TMP_DIR

Value: 6; Missing a temporary folder. Introduced in PHP 5.0.3.

但是我有一个大问题:我只能访问我放置文件的目录,我无法检查临时目录是否存在或检查php.ini(服务器来自我的客户端,以及他不能让我访问其他目录)

幸运的是,客户正在检查这些参数并告诉我它们是如何的。 因此,临时目录(upload_tmp_dir)设置为/ tmp / tmp目录实际存在,并具有所有权限:

drwxrwxrwt 34 root root 2832 2014-08-30 00:00 tmp

我一直在搜索为什么它会显示"错过临时文件夹的错误"尽管它存在,但我无法找到理由或解决方案。我离开here a pastebin with the output of ini_get_all()

如果您可以评论任何可能的解决方案,我将不胜感激。感谢。

4 个答案:

答案 0 :(得分:0)

您可以更改哪个目录" tmp"使用此功能:http://php.net/manual/en/ini.core.php#ini.upload-tmp-dir

但显然,您必须在核心ini文件中完成此操作:http://www.reddit.com/r/PHP/comments/1c87xk/can_i_use_ini_set_to_set_the_value_of_upload_tmp/

答案 1 :(得分:0)

让您的客户修复其服务器的配置。

如果他们的东西坏了,你什么也做不了,我无法想象他们会在必须修理它时与你作斗争。这不是技术问题......您已经解决了技术问题。

答案 2 :(得分:0)

检查open_basedir。如果已启用,PHP manual状态:

  

如果打开open_basedir,则系统默认目录必须为   允许上传成功。

此外,您可以指定自定义目录,并且应检查它是否已设置但不可写。同一页面上还说明,如果指定的目录不可写,PHP将回退到系统默认临时目录(/ tmp)。

答案 3 :(得分:0)

不确定没有人指出它。但据我所知。没有人在root权限下运行php,文件夹/ tmp具有root:root所有权。我只能假设,如果您使用file_put_contentsfopen('/tmp/some_new_file')...,则应该会在某些权限被拒绝或类似的情况下产生。因此,您应该使用php用户的可访问文件夹永久更新php.INI,以避免再次出现错误