Giải trình
Lỗi này xuất phát từ Varien_File_Uploader::__construct()
tronglib/Varien/File/Uploader.php
Dưới đây là những phần quan trọng
<?php
class Varien_File_Uploader
{
/**
* Uploaded file handle (copy of $_FILES[] element)
*
* @var array
* @access protected
*/
protected $_file;
const TMP_NAME_EMPTY = 666;
function __construct($fileId)
{
$this->_setUploadFileId($fileId);
if(!file_exists($this->_file['tmp_name'])) {
$code = empty($this->_file['tmp_name']) ? self::TMP_NAME_EMPTY : 0;
throw new Exception('File was not uploaded.', $code);
} else {
$this->_fileExists = true;
}
}
}
Nhìn lên cây bạn thấy cái này được gọi là
$uploader = new Mage_Core_Model_File_Uploader('image');
Được mở rộng từ lớp Varien, do đó, Varien_File_Uploader::_setUploadFileId($fileId)
sẽ xây dựng $this->_file
mảng dựa trên khóa image
, trong trường hợp này.
Vậy bây giờ vấn đề là tại sao lại $_FILES['image']['tmp_name']
trống rỗng?
Tôi đã kiểm tra 'error'
trường bằng cách tạm thời thay thế nó bằngthrow new Exception('File was not uploaded. ' . $this->_file['error'], $code);
Tôi đã nhận được 7, Failed to write file to disk. Introduced in PHP 5.1.0.
có nghĩa là đó là một vấn đề quyền.
Giải pháp
Thực hiện phpinfo()
để kiểm tra vị trí của bạn upload_tmp_dir
được đặt và đảm bảo nó có thể ghi được.
Trong trường hợp của tôi, tôi đã hết dung lượng tệp trong /tmp
thư mục của máy chủ.