尽管upload\u tmp\u dir是可写的,但PHP返回false
我试图使用尽管upload\u tmp\u dir是可写的,但PHP返回false,php,upload,temporary-files,Php,Upload,Temporary Files,我试图使用tmpfile(),但返回false 我不能使用sys\u-get\u-temp\u-dir(),因为我在PHP5.1.6上,类似问题的海报建议我使用upload\u-tmp\u-dir(这个值与sys\u-get\u-temp\u-dir()相同吗?)和是可写的()返回true 显然,根据回复,tmp目录可能与upload_tmp_目录不同。问题不在于找到tmp目录工作的任何方法: $\u ENV['tmp'],$\u ENV['temp']和$\u ENV['tmpdir']为空。
tmpfile()
,但返回false
我不能使用sys\u-get\u-temp\u-dir()
,因为我在PHP5.1.6上,类似问题的海报建议我使用upload\u-tmp\u-dir
(这个值与sys\u-get\u-temp\u-dir()
相同吗?)和是可写的()
返回true
显然,根据回复,tmp目录可能与upload_tmp_目录不同。问题不在于找到tmp目录工作的任何方法:
$\u ENV['tmp']
,$\u ENV['temp']
和$\u ENV['tmpdir']
为空。另外,以下代码不会工作,因为tempnam()
失败,原因可能与tmpfile()
相同
$temp=tempnam(__FILE__,'');
if (file_exists($temp)) {
unlink($temp);
return dirname($temp);
}
有人还有什么建议吗?可能是服务器配置问题吗?
谢谢也许您的服务器上启用了
打开\u basedir
选项
您不应该发出错误或检查error.log,警告消息应该在那里 也许这是一个
开放的\u basedir
问题:
记住,open_basedir会影响
这个功能。您将得到一个错误:
警告:tmpfile()[function.tmpfile]:
open_basedir限制生效。
文件(/var/tmp)不在
允许的路径:……blabla=)
资料来源:
另外,sys\u get\u temp\u dir
与upload\u tmp\u dir
不同
要在较旧的PHP版本中模拟此sys\u get\u temp\u dir
,请尝试以下操作:
<?php
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(uniqid(rand(),TRUE),'');
if (file_exists($tempfile)) {
unlink($tempfile);
return realpath(dirname($tempfile));
}
}
}
?>
来源:tmpfile()
不会上载文件,它会在您的系统tmp文件夹中创建临时文件
如果没有sys\u get\u temp\u dir()
,您可以尝试使用以下方法之一获取tmp dir:
getenv('TMP');
getenv('TEMP');
getenv('TMPDIR');
有多个示例说明如何编写,一旦找到它,请查看它是否可写
tmpfile()
返回false的唯一原因是它无法创建文件。类似的问题。亲爱的用户,他很好地给了我a-1,你能在这里评论一下原因吗?或者提交你自己的解决方案?phpinfo说OpenBaseDir没有价值。这是否意味着它未启用?是。在这种情况下,open\u basedir
不是您的问题。我在回答中添加了更多信息。。。请查收。祝你好运谢谢你的帮助。不幸的是,这些变量都没有设置。我打印出了$_ENV数组,但没有包含tmp目录的路径。您认为这是服务器配置问题吗?谢谢