升级phpMyAdmin至v4.8.0后遇$cfg['TempDir']不可访问错误求助
解决phpMyAdmin v4.8.0的$cfg['TempDir']不可访问问题
首先得明确一个核心误区:提示里的./tmp/是相对于phpMyAdmin安装目录(也就是/usr/share/phpmyadmin)的路径,不是你提到的/usr/share/tmp。下面是一步步的实操解决步骤:
1. 创建正确的tmp目录
先在phpMyAdmin的根目录下创建tmp文件夹,执行命令:
sudo mkdir /usr/share/phpmyadmin/tmp
2. 设置web服务器可读写的权限
phpMyAdmin由web服务器(Apache/Nginx)运行,所以tmp目录需要让服务器用户拥有读写权限:
- 如果你用的是Apache,用户通常是
www-data:
sudo chown www-data:www-data /usr/share/phpmyadmin/tmp sudo chmod 775 /usr/share/phpmyadmin/tmp
- 如果你用的是Nginx,用户可能是
nginx或www-data(取决于系统发行版):
sudo chown nginx:nginx /usr/share/phpmyadmin/tmp sudo chmod 775 /usr/share/phpmyadmin/tmp
3. 验证并修正配置文件
打开phpMyAdmin的config.inc.php(路径一般是/usr/share/phpmyadmin/config.inc.php),确认$cfg['TempDir']的配置:
推荐直接写绝对路径,避免相对路径的歧义:
$cfg['TempDir'] = '/usr/share/phpmyadmin/tmp/';
保存配置后重启web服务器:
# Apache用户执行 sudo systemctl restart apache2 # Nginx用户执行 sudo systemctl restart nginx
4. 排查SELinux限制(针对CentOS/RHEL等系统)
如果你的系统开启了SELinux,即使权限设置正确,也可能被策略阻止访问。可以先临时关闭SELinux测试:
sudo setenforce 0
如果关闭后提示消失,就给tmp目录添加正确的SELinux上下文:
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/usr/share/phpmyadmin/tmp(/.*)?" sudo restorecon -Rv /usr/share/phpmyadmin/tmp
之后再重新开启SELinux:
sudo setenforce 1
5. 验证结果
重新访问phpMyAdmin,查看提示是否消失。如果问题依旧,建议查看web服务器的错误日志(比如Apache的/var/log/apache2/error.log、Nginx的/var/log/nginx/error.log),里面会有更详细的权限或路径报错信息,方便进一步排查。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

