Ошибка class.upload.php в капле CentOS 7.6 LEMP

Короче говоря:

Я размещал свое приложение MVC PHP в Amazon Web Services в экземпляре LEMP.

Затем я решил перейти в Digital Ocean, потому что их экземплярам не разрешено отправлять электронные письма.

Мое приложение в экземпляре AWS могло загружать фотографии, записывать в базу данных и взаимодействовать с внешним API.

Однако в Digital Ocean я не могу загружать фотографии с помощью class.upload.php. В /var/log/nginx/error.log это результат:

2020/05/18 03:28:17 [error] 10851#0: *174 FastCGI sent in stderr: "PHP message: PHP Notice:  A non well formed numeric value encountered in /usr/share/nginx/html/admin/core/controller/class.upload.php on line 2667 PHP message: PHP Notice:  A non well formed numeric value encountered in /usr/share/nginx/html/admin/core/controller/class.upload.php on line 2667" while reading response header from upstream, client: 181.115.109.228, server: _, request: "POST /admin/index.php?action=addproduct HTTP/1.1", upstream: "fastcgi://unix:/run/php-fpm/www.sock:", host: "165.227.91.80", referrer: "http://165.227.91.80/admin/index.php?view=newproduct"

Вы могли бы подумать, что в class.upload.php в строке 2667 есть ошибка, однако это не так. Как я вам говорю, в AWS все работает так, как задумано./var/log/php-fpm/error.logне показывает никаких ошибок. Это результат:

[18-May-2020 01:39:40] NOTICE: fpm is running, pid 10826
[18-May-2020 01:39:40] NOTICE: ready to handle connections
[18-May-2020 01:39:40] NOTICE: systemd monitor interval set to 10000ms

Каталог загрузки /usr/share/nginx/html/admin/storage Я установил, что разрешения установлены на 777. Что я делаю не так? Моя версия PHPPHP 7.3.18 (cli).Это код PHP, который добавляет продукт в базу данных.

$product = new ProductData();
    foreach ($_POST as $k => $v) {
       if($k=="existence"){
           if($v==""){
            $product->existence=12;
           }else{
            $product->$k = $v;
           }
       }else{
        $product->$k = $v;

       }
    }

    $alphabeth = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYZ1234567890_-";
    $code = "";
    for ($i = 0;$i < 11;$i++) {
        $code.= $alphabeth[rand(0, strlen($alphabeth) - 1) ];
    }
    $product->short_name = $code;
    $handle = new Upload($_FILES['image']);
    if ($handle->uploaded) {
        $url = "storage/products/";
        $handle->Process($url);
        $product->image = $handle->file_dst_name;
    }
    if (isset($_POST["is_public"])) {
        $product->is_public = 1;
    } else {
        $product->is_public = 0;
    }
    if (isset($_POST["in_existence"])) {
        $product->in_existence = 1;
    } else {
        $product->in_existence = 0;
    }
    if (isset($_POST["is_featured"])) {
        $product->is_featured = 1;
    } else {
        $product->is_featured = 0;
    }
    if (isset($_POST["doublePoints"])) {
        $product->doublePoints = 1;
    } else {
        $product->doublePoints = 0;
    }
    // $product->name = $_POST["name"];
    $product->add();
    Core::redir("index.php?view=products");

1 ответ

Решение

SELinux был disabled в экземпляре AWS и enforcingв DigitalOcean. Мне просто пришлось отключить его, чтобы загружать файлы.

Другие вопросы по тегам