PHP无法找到tmp目录

Don*_*ply 5 php apache tmp

我在tmp目录中创建文件的函数有问题,例如tmpfile()tempnam().他们似乎都没有写入tmp并返回false.upload_tmp_dir在php ini中设置,文件上传工作正常.

调试此错误时,我发现sys_get_temp_dir()获取tmp目录的位置,遗憾的是我的PHP版本(5.1.6)不支持它.我还看到使用以下方法取代了以下功能sys_get_temp_dir():

if ( !function_exists('sys_get_temp_dir')) {
  function sys_get_temp_dir() {
    if (!empty($_ENV['TMP'])) { return realpath($_ENV['TMP']); }
    if (!empty($_ENV['TMPDIR'])) { return realpath( $_ENV['TMPDIR']); }
    if (!empty($_ENV['TEMP'])) { return realpath( $_ENV['TEMP']); }
    $tempfile=tempnam(__FILE__,'');
    if (file_exists($tempfile)) {
      unlink($tempfile);
      return realpath(dirname($tempfile));
    }
    return null;
  }
}
Run Code Online (Sandbox Code Playgroud)

但是没有引用$ _ENV数组中的tmp目录,并且tempnam()如前所述失败.

还没有设置open_basedir我听说会导致类似的问题

我怎样才能找到tmp目录的位置或是否设置了?
这是apache服务器配置问题还是PHP问题?

谢谢你的帮助

Laz*_*One 1

TMP、TEMP(可能还有 TMPDIR)仅在 Windows 上有效,并且通常指向C:\Windows\TEMP. 在 Linux 上,默认临时位置是/tmp. 要解决此问题(与函数一起使用tempnam()),您可以在网站空间内的某个位置创建一个临时文件夹,指定适当的访问权限并将其作为第一个参数传递给上述函数。

这不是一个很好的解决方案,但总比没有好。