在最后一天试图解决这个问题时,我一直在争吵我的大脑。
基本上,$_FILES['logo']['tmp_name']
中设置的临时文件不存在。
该文件显然已上传,如下面的print_r()
$_FILES
所示:
Array
(
[logo] => Array
(
[name] => Channelcat.jpg
[type] => image/jpeg
[tmp_name] => /tmp/php26YfhY
[error] => 0
[size] => 152142
)
)
我的/tmp
目录上的文件权限显然是777.我怀疑这个问题可能与它使用的共享主机有关。
以下基本上是我尝试使用该文件。
$logo = $_FILES['logo'];
if($logo['size'] > (1024000)) {
die('File size is too large.');
}
$path = __DIR__ . '/uploads/'. $logo['name'];
move_uploaded_file($logo['tmp_name'], $path);
我尝试使用is_uploaded_file($logo['tmp_name'])
,返回false,realpath($logo['tmp_name'])
返回空字符串。
move_uploaded_file
没有错误,但也没有将文件移动到指定的目录。
答案 0 :(得分:0)
当您在 php.ini 文件中设置了一些 open_basedir 变量后,文件上传工作,$_FILE 数组被填充,甚至显示 tmp_name 子键,静止文件不会写入磁盘,这导致了令人费解的情况,因为 error 子键设置为 0 时不会报告进一步的错误。
解决方案是将临时文件夹设置为 open_basedir php.ini 变量内的某个子文件夹。