You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel执行composer报tempnam()错误,sys_temp_dir配置疑问

Laravel 8.75下Composer更新/安装报错的解决及sys_temp_dir配置说明

问题描述

  • Laravel版本:8.75
  • 执行composer update或composer install命令时,触发如下错误:
composer update

In CaBundle.php line 133:

  tempnam(): file created in the system's temporary directory

require [--dev] [--dry-run] [--prefer-source] [--prefer-dist] [--prefer-install PREFER-INSTALL] [--fixed] [--no-suggest] [--no-progress] [--no-update] [--no-install] [--update-no-dev] [-w|--update-with-dependencies] [-W|--update-with-all-dependencies] [--with-dependencies] [--with-all-dependencies] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [--sort-packages] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--apcu-autoloader-prefix APCU-AUTOLOADER-PREFIX] [--] [<packages>...]

排查情况

经排查,问题根源是php.ini中的sys_temp_dir配置:

  • 默认配置为;sys_temp_dir = "/tmp"(处于注释状态)
  • 手动修改为sys_temp_dir = "C:\windows\Temp"或sys_temp_dir = "tmp"时,均会引发上述错误

核心问题解答:是否需要设置sys_temp_dir?

不需要手动设置sys_temp_dir,原因及解决方法如下:

  1. PHP默认行为足够:PHP会自动识别系统的临时目录(Windows下默认是C:\Windows\Temp,Linux下是/tmp),注释状态的sys_temp_dir就是让PHP使用系统默认值,这时候是正常的。
  2. 手动设置报错的原因:
    • 路径格式错误:Windows下路径的反斜杠需要转义成\\,或者换成正斜杠/,比如正确写法是sys_temp_dir = "C:\\windows\\Temp"或sys_temp_dir = "C:/windows/Temp",错误格式会导致PHP无法访问临时目录。
    • 权限问题:如果手动指定的目录没有读写权限,也会触发tempnam()函数报错。
  3. 快速解决步骤:
    • 打开当前PHP环境使用的php.ini文件(CLI模式下可通过php --ini命令查看路径)
    • 找到sys_temp_dir配置项,保持它的注释状态(不要去掉开头的分号)
    • 保存配置后,重新执行composer update或composer install即可

内容的提问来源于stack exchange,提问作者ronrun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 04:54:24