我正在尝试安装Magento软件包,但我得到了No file was uploaded
它来自此代码,因为$_FILES
是/downloader/Maged/Controller.php
/**
* Install uploaded package
*/
public function connectInstallPackageUploadAction()
{
if (!$_FILES) {
echo "No file was uploaded";
return;
}
if(empty($_FILES['file'])) {
echo "No file was uploaded";
return;
}
$info =& $_FILES['file'];
if(0 !== intval($info['error'])) {
echo "File upload problem";
return;
}
$target = $this->_mageDir . DS . "var/" . uniqid() . $info['name'];
$res = move_uploaded_file($info['tmp_name'], $target);
if(false === $res) {
echo "Error moving uploaded file";
return;
}
$this->model('connect', true)->installUploadedPackage($target);
@unlink($target);
}
值得注意的是,产品上传工作正常。
我得到的唯一日志输出是
2014-07-03T18:44:15 + 00:00 ERR(3):警告:array_key_exists()期望参数2为数组,在/var/www/vhosts/example.com/httpdocs/app中给出null第166行的/code/core/Mage/Captcha/Model/Observer.php
exception.log
为空
答案 0 :(得分:1)
确保magento安装中的var文件夹完全可写。 777许可。所有文件夹和文件。
答案 1 :(得分:1)
您可以先尝试上传一个小的虚拟文件,以检查错误是否保持不变。
可能会达到文件上传限制。
由于upload_max_filesize
或post_max_size
太小,因此文件上传通常会失败,如PHP文档的Common Pitfalls部分所述。
答案 2 :(得分:1)
在firefox中使用firebug检查您的表单是否有enctype="multipart/form-data"
。
答案 3 :(得分:1)
检查用它创建的用户组,
要解释一下,最近我有一些文件保存问题。原来我使用Root用户为服务器创建了文件夹,CPanel用户(运行的是一个php)没有权限写入Root帐户拥有的文件夹,即使设置权限为777。
只是一个想法。
答案 4 :(得分:1)
首先检查您的安装是否配置正确 见@ http://php.net/manual/en/features.file-upload.common-pitfalls.php
此外,如果您使用PUT / xhr上传文件在输入流上
$in = fopen('php://input','r');
请参阅@ http://php.net/manual/en/features.file-upload.put-method.php和https://stackoverflow.com/a/11771857/2645347,
这可以解释空的$ FILES数组,以防万一其他没问题且上传通过xhr / PUT工作。
答案 5 :(得分:1)
$ _ FILES是通过HTTP POST方法上传到当前脚本的关联项目数组。所有上传的文件都存储在$ HTTP_POST_FILES中,包含相同的初始信息,但不是超全局。所以,...确保该方法是POST
请务必检查您的表单是否包含正确的enctype:
<form ... enctype="multipart/form-data"> ... </form>
有时会发生当有人上传多个文件时,$ _FILES返回空。当我选择超过某个大小的文件时,可能会发生这种情况问题可能出在POST_MAX_SIZE配置中。
答案 6 :(得分:1)
开启
app/code/core/mage/captcha/model/observer.php
更改
public function checkUserLoginBackend($observer)
{
$formId = 'backend_login';
$captchaModel = Mage::helper('captcha')->getCaptcha($formId);
$loginParams = Mage::app()->getRequest()->getPost('login');
$login = array_key_exists('username', $loginParams) ? $loginParams['username'] : null;
if ($captchaModel->isRequired($login)) {
if (!$captchaModel->isCorrect($this->_getCaptchaString(Mage::app()->getRequest(), $formId))) {
$captchaModel->logAttempt($login);
Mage::throwException(Mage::helper('captcha')->__('Incorrect CAPTCHA.'));
}
}
$captchaModel->logAttempt($login);
return $this;
}
到
public function checkUserLoginBackend($observer)
{
$formId = 'backend_login';
$captchaModel = Mage::helper('captcha')->getCaptcha($formId);
$login = Mage::app()->getRequest()->getPost('username');
if ($captchaModel->isRequired($login)) {
if (!$captchaModel->isCorrect($this->_getCaptchaString(Mage::app()->getRequest(), $formId))) {
$captchaModel->logAttempt($login);
Mage::throwException(Mage::helper('captcha')->__('Incorrect CAPTCHA.'));
}
}
$captchaModel->logAttempt($login);
return $this;
}
您的问题是: &#34;如果在RSS feed中登录,则Captcha Observer会抛出错误&#34;问题#208
或者如果您希望只能将变量$ login替换为:
$login = array_key_exists('username', array($loginParams)) ? $loginParams['username'] : null;
答案 7 :(得分:-1)
您可以尝试以下几点。 使用Magento Varien文件上传的类来上传文件。
1)检查表单中的enctype="multipart/form-data"
。
2)在表单中使用Magento Form Key。
3)使用Varien文件上传器使用以下链接答案上传文件。