我在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问题?
谢谢你的帮助
TMP、TEMP(可能还有 TMPDIR)仅在 Windows 上有效,并且通常指向C:\Windows\TEMP
. 在 Linux 上,默认临时位置是/tmp
. 要解决此问题(与函数一起使用tempnam()
),您可以在网站空间内的某个位置创建一个临时文件夹,指定适当的访问权限并将其作为第一个参数传递给上述函数。
这不是一个很好的解决方案,但总比没有好。
归档时间: |
|
查看次数: |
28883 次 |
最近记录: |