【发布时间】:2010-12-04 00:08:03
【问题描述】:
当您处理 HTTP 上传时,文件被上传到
$_FILES['field_name']['tmp_name']
我知道我可以从那里提取临时路径。但我期待可能有一个 $_SERVER 参数,它有临时路径(没有)或其他优雅的方式知道它。
有吗?
【问题讨论】:
当您处理 HTTP 上传时,文件被上传到
$_FILES['field_name']['tmp_name']
我知道我可以从那里提取临时路径。但我期待可能有一个 $_SERVER 参数,它有临时路径(没有)或其他优雅的方式知道它。
有吗?
【问题讨论】:
函数sys_get_temp_dir()返回PHP用来存储临时文件的目录路径。
【讨论】:
ini_get('upload_tmp_dir');
【讨论】:
upload_tmp_dir。如果ini_get('upload_tmp_dir') 返回一个空字符串,你最好遵循@NateGlenn 的回退到sys_get_temp_dir() 的建议。
我个人会使用 Sbm007 的建议:
ini_get('upload_tmp_dir');
因为这考虑了每个虚拟主机的 apache 设置,例如 upload_tmp_dir 和 open_basedir 限制,其中:
sys_get_temp_dir()
只会返回操作系统的特定临时目录,如果在多主机环境中可能会给您一个您无法写入的目录。
【讨论】:
在我的私人计算机上使用 XAMPP,ini_get 方法效果很好,因为 php.ini 指定了值 upload_tmp_dir。但是,在上传到我雇主的服务器后,此代码不起作用,因为该值显然不存在于他的服务器的 php.ini 文件中。所以,我使用系统的临时目录作为默认目录,现在脚本可以在我的电脑和他的服务器上运行:
$ini_val = ini_get('upload_tmp_dir');
$upload_tmp_dir = $ini_val ? $ini_val : sys_get_temp_dir();
【讨论】:
$upload_tmp_dir = ini_get('upload_tmp_dir') ?: sys_get_temp_dir() 在 PHP 5.3 或更高版本中。