“Temporary directory not writable”错误源于PHP进程无权写入系统临时目录(如/tmp),需检查php -i中upload_tmp_dir或sys_temp_dir路径及权限,或在php.ini中指定并授权自定义临时目录(如/var/www/php-tmp),重启Web服务生效。

phpMyAdmin 报错 “Temporary directory not writable” 怎么办
这个错误说明 phpMyAdmin 尝试往系统临时目录(如 /tmp)写入导出中间文件时被拒绝,根本原因不是 phpMyAdmin 本身配置错,而是 PHP 进程没有对该目录的写权限,或 open_basedir 限制了路径访问。
检查 PHP 的临时目录和权限
先确认 PHP 实际使用的临时目录位置,再验证权限是否到位:
- 执行
php -i | grep "upload_tmp_dir\|sys_temp_dir",看输出的upload_tmp_dir或sys_temp_dir值;若为空,则默认用系统/tmp - 用
ls -ld /tmp(或你查到的实际路径)检查目录权限,确保 web 用户(如www-data、apache或nginx)有写权限(即目录属组/属主可写,或权限含w) - 如果目录挂载时加了
noexec或nosuid,也可能导致写入失败,可用mount | grep "$(dirname /tmp)"查看
绕过系统 /tmp:改用自定义临时目录
当无法修改系统 /tmp 权限(如共享主机),最稳妥的方式是给 PHP 指定一个可控的临时目录:
- 在
php.ini中设置:upload_tmp_dir = /var/www/php-tmp(路径需存在且 web 用户可写) - 创建目录并赋权:
mkdir -p /var/www/php-tmp && chown www-data:www-data /var/www/php-tmp && chmod 700 /var/www/php-tmp - 重启 Web 服务(
systemctl restart apache2或systemctl restart php-fpm) - 注意:如果启用了
open_basedir,必须把新路径加进白名单,例如:open_basedir = "/var/www/:/var/www/php-tmp/"
phpMyAdmin 配置里不要硬改 tmp_dir
phpMyAdmin 的 config.inc.php 中有 $cfg['TempDir'] 选项,但它只影响部分内部缓存(比如 SQL 查询分析),**不控制文件导出所用的临时目录**。导出依赖的是 PHP 原生的上传与临时文件机制,改这个变量对解决“Temporary directory not writable”无效。
容易被忽略的一点是:即使你看到 phpMyAdmin 界面提示“临时目录不可写”,它背后调用的仍是 sys_get_temp_dir() 和 move_uploaded_file() 等 PHP 底层函数——所以问题一定出在 PHP 层,而不是 phpMyAdmin 自身配置。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











