每当我尝试上传文件并导入 phpMyAdmin 时,都会出现以下错误:
无法读取文件
phpMyAdmin 是我在服务器上运行的唯一的 php 脚本,因此我的 php 配置文件除了以下更改外,其他都相当原始:
upload_tmp_dir = /tmp
upload_max_filesize = 10M
post_max_size = 50M
memory_limit = 64M
我尝试导入的文件为 4MB,完全在 10MB 的上传大小和 50MB 的帖子大小之内(它也是 UTF-8)。设置 upload_tmp_dir 实际上解决了我之前遇到的一个问题(phpMyAdmin 抱怨我甚至没有指定文件),或者至少将错误更改为我现在得到的结果。/tmp 上的权限为 777。
问题可能出在哪里?该文件来自 hostmonster 上的 cpanel 安装,我正在将其迁移到自己的 vps 上。我尝试从 cpanel 备份实用程序和他们的 phpMyAdmin 安装(未压缩和 gzip 压缩)中获取 sql 文件。我不认为文件已损坏。
额外信息:我正在运行 CentOS 5.6、phpMyAdmin 3.4.2、mysql 5.1.52 和 php 5.2.16。
答案1
如果open_basedir
在 php.ini 中设置,PHP 将无法访问该目录上级的文件。
答案2
我认为问题在于设置php.ini
:
upload_tmp_dir = /tmp
open_basedir = /data/home/:/tmp/
需要open_basedir
添加/tmp/
太多
答案3
我认为您可以在配置文件 php.ini 中进行设置:
upload_tmp_dir = /tmp
open_basedir = /var/www:/data/home:/tmp
但是,不要添加目标目录的最后一个斜杠。在 php 文档中发现:
When you want to restrict access to only the specified directory, end with a slash. For example: open_basedir = /dir/incl/