【问题标题】:PHP way to find the web server's temp path?PHP 方法来查找 Web 服务器的临时路径?
【发布时间】:2010-12-04 00:08:03
【问题描述】:

当您处理 HTTP 上传时,文件被上传到

$_FILES['field_name']['tmp_name']

我知道我可以从那里提取临时路径。但我期待可能有一个 $_SERVER 参数,它有临时路径(没有)或其他优雅的方式知道它。

有吗?

【问题讨论】:

    标签: php upload path


    【解决方案1】:

    函数sys_get_temp_dir()返回PHP用来存储临时文件的目录路径。

    【讨论】:

    • 返回 C:\Windows\TEMP\。我的 sn-p 返回 D:/WAMP/tmp。
    • WAMP 已预先配置为使用分发的 tmp 目录。
    【解决方案2】:
    ini_get('upload_tmp_dir');
    

    【讨论】:

    • 这可能是更正确的答案,因为上传临时目录可能与系统临时目录不同。
    • 就像在 XAMPP 发行版中一样。
    • 请注意:并非所有 Web 服务器都设置为 upload_tmp_dir。如果ini_get('upload_tmp_dir') 返回一个空字符串,你最好遵循@NateGlenn 的回退到sys_get_temp_dir() 的建议。
    【解决方案3】:

    我个人会使用 Sbm007 的建议:

    ini_get('upload_tmp_dir');

    因为这考虑了每个虚拟主机的 apache 设置,例如 upload_tmp_dir 和 open_basedir 限制,其中:

    sys_get_temp_dir()

    只会返回操作系统的特定临时目录,如果在多主机环境中可能会给您一个您无法写入的目录。

    【讨论】:

      【解决方案4】:

      在我的私人计算机上使用 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 或更高版本中。
      猜你喜欢
      • 2014-06-27
      • 2015-12-14
      • 2014-09-25
      • 2014-10-30
      • 2016-08-26
      • 1970-01-01
      • 1970-01-01
      • 2015-10-04
      • 1970-01-01
      相关资源
      最近更新 更多