2

我正在尝试安装 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/code/ 中给出的 null core/Mage/Captcha/Model/Observer.php 第 166 行

exception.log是空的

4

8 回答 8

1

确保您在 magento 安装中的 var 文件夹是完全可写的。777 许可。所有文件夹和文件。

于 2014-07-03T05:30:57.143 回答
1

检查创建它的用户组,

解释一下,最近我遇到了一些文件保存问题。原来我已经使用服务器的 Root 用户创建了该文件夹,而 CPanel 用户(正在运行的一个 php)没有权限写入 Root 帐户拥有的文件夹,即使将权限设置为 777。

只是一个想法。

于 2014-07-13T20:35:50.637 回答
1

在 firefox 中使用 firebug 检查您的表单是否有enctype="multipart/form-data".

于 2014-07-08T14:01:08.270 回答
1

您可以尝试先上传一个小的虚拟文件,以检查错误是否保持不变。

可能会达到文件上传限制。

如 PHP 文档的Common Pitfalls部分所述,文件上传通常由于upload_max_filesizepost_max_size太小而失败。

于 2014-07-08T09:13:37.710 回答
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;
}

您的问题是:“如果登录 RSS 提要,Captcha Observer 会引发错误”问题 #208

或者,如果您希望只能将变量 $login 替换为如下所示:

$login = array_key_exists('username', array($loginParams)) ? $loginParams['username'] : null;
于 2014-07-14T15:47:44.657 回答
1

$_FILES 是通过 HTTP POST 方法上传到当前脚本的项目的关联数组。所有上传的文件都存储在 $HTTP_POST_FILES 中,包含相同的初始信息,但不是超全局的。所以,...确保该方法是 POST

始终检查您的表单是否包含正确的编码类型:

<form ... enctype="multipart/form-data"> ... </form>

有时会发生当有人上传多个文件时,$_FILES 返回空。当我选择超过一定大小的文件时,可能会发生这种情况。问题可能出在 POST_MAX_SIZE 配置中。

于 2014-07-14T12:08:13.357 回答
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.phphttps://stackoverflow.com/a/11771857/2645347

这将解释空的 $FILES 数组,以防万一一切正常并且通过 xhr/PUT 进行上传。

于 2014-07-14T11:45:56.657 回答
-1

您可以尝试以下几点。使用 Magento Varien File Uploaded Classes 上传文件。

Magento 文件上传器

1) 检查enctype="multipart/form-data"您的表格。

2) 在您的表单中使用 Magento 表单密钥。

3) 使用 Varien 文件上传器使用以下链接答案上传您的文件。

于 2014-07-12T10:55:01.307 回答