Перейти к публикации

Ошибка при открытии админпанели DLE 14.3


Рекомендованные сообщения

DLE 14.3; NGINX; PHP-FPM 8.0.8;

Fatal error: Uncaught Error: Undefined constant "DINITVERSION" in /var/www/site/engine/inc/include/functions.inc.php:1417 Stack trace: #0 /var/www/site/engine/inc/include/functions.inc.php(693): build_js(Array) #1 /var/www/site/engine/inc/main.php(24): echoheader('<i class="fa fa...', Array) #2 /var/www/site/engine/inc/include/init.php(507): include_once('/var/www/site...') #3 /var/www/site/admin.php(29): require_once('/var/www/site...') #4 {main} thrown in /var/www/site/engine/inc/include/functions.inc.php on line 1417

 

На DLE 14.2 такой проблемы нет. 

Ссылка на сообщение
Поделиться на других сайтах
20 часов назад, zettend сказал:

На DLE 14.2 такой проблемы нет. 

Нелегальная копия DLE у вас. И дело вовсе не в версии PHP. Либо некорректно модифицированная. Других вариантов быть не может.

Ссылка на сообщение
Поделиться на других сайтах
17 часов назад, celsoft сказал:

Нелегальная копия DLE у вас.

Клиентам я всегда на стадии разработки ставлю исключительно чистую версию. Лицензию они потом покупают сами. 

17 часов назад, celsoft сказал:

Либо некорректно модифицированная.

Почему тогда DLE 14.2 работает корректно?

В любом случае вот мой Dockerfile:

Скрытый текст

# Для начала указываем исходный образ, он будет использован как основа
FROM php:8-fpm

# RUN выполняет идущую за ней команду в контексте нашего образа.
# В данном случае мы установим некоторые зависимости и модули PHP.
# Для установки модулей используем команду docker-php-ext-install.
# На каждый RUN создается новый слой в образе, поэтому рекомендуется объединять команды.
RUN apt-get update && apt-get install -y \
    curl \
    wget \
    git \
    gnupg \
    gnupg1 \
    gnupg2 \
    libfreetype6-dev \
    libonig-dev \
    libpq-dev \
    libjpeg62-turbo-dev \
    libmcrypt-dev \
    libpng-dev \
    libwebp-dev \
    zlib1g-dev \
    libzip-dev \
    libxml2-dev \
    && pecl install mcrypt-1.0.4 \
    && docker-php-ext-install -j$(nproc) iconv mbstring mysqli pdo_mysql zip mbstring exif \
    && docker-php-ext-configure gd --with-freetype --with-webp --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd \
    && docker-php-ext-install xml \
    && docker-php-ext-enable mcrypt \
    && apt-get clean

# Куда же без composer'а.
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Ставим редиску под PHP
RUN \
    curl 'http://pecl.php.net/get/redis-5.3.4.tgz' -o /tmp/redis-5.3.4.tgz  \
    && cd /tmp \
    && pecl install redis-5.3.4.tgz \
    && rm -rf redis-5.3.4.tgz \
    && docker-php-ext-enable redis

# Указываем рабочую директорию для PHP
WORKDIR /var/www

# Запускаем контейнер
# Из документации: The main purpose of a CMD is to provide defaults for an executing container. These defaults can include an executable,
# or they can omit the executable, in which case you must specify an ENTRYPOINT instruction as well.
CMD ["php-fpm"]

 

Конфиг PHP.INI:

Скрытый текст

[PHP]
upload_max_filesize = 32M
post_max_size = 32M
memory_limit = 512M

 

Конфиг Хоста NGINX:

Скрытый текст


upstream php {
    server php:9000;
}

server {
    server_name www.site.ru site.ru;
    return 301 https://site.ru$request_uri;
}

server {
    # SSL configuration
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    ssl_certificate /var/www/ssl/certs/cert.pem;
    ssl_certificate_key /var/www/ssl/private/key.pem;
    ssl_client_certificate /var/www/ssl/certs/cloudflare.crt;
    ssl_verify_client on;
    server_name www.site.ru;
    return 301 https://site.ru$request_uri;
}

server {
    # SSL configuration
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    ssl_certificate /var/www/ssl/certs/cert.pem;
    ssl_certificate_key /var/www/ssl/private/key.pem;
    ssl_client_certificate /var/www/ssl/certs/cloudflare.crt;
    ssl_verify_client on;

    server_name site.ru;

    #Show real IP users, CloudFlare Fix!
    set_real_ip_from 103.21.244.0/22;
    set_real_ip_from 103.22.200.0/22;
    set_real_ip_from 103.31.4.0/22;
    set_real_ip_from 104.16.0.0/12;
    set_real_ip_from 108.162.192.0/18;
    set_real_ip_from 131.0.72.0/22;
    set_real_ip_from 141.101.64.0/18;
    set_real_ip_from 162.158.0.0/15;
    set_real_ip_from 172.64.0.0/13;
    set_real_ip_from 173.245.48.0/20;
    set_real_ip_from 188.114.96.0/20;
    set_real_ip_from 190.93.240.0/20;
    set_real_ip_from 197.234.240.0/22;
    set_real_ip_from 198.41.128.0/17;
    set_real_ip_from 199.27.128.0/21;
    set_real_ip_from 2400:cb00::/32;
    set_real_ip_from 2606:4700::/32;
    set_real_ip_from 2803:f800::/32;
    set_real_ip_from 2405:b500::/32;
    set_real_ip_from 2405:8100::/32;
    real_ip_header CF-Connecting-IP;

    index index.php index.html index.htm;

    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;

    root /var/www/site;

    location ~* \.(eot|otf|ttf|woff|woff2)$ {
        access_log      off;
        log_not_found   off;
        expires 30d;
        include             /etc/nginx/mime.types;
        add_header Access-Control-Allow-Origin *;
    }

    location / {
        limit_req zone=req_limit_per_ip burst=5 nodelay;
        limit_conn conn_limit_per_ip 30;

        gzip_static on;

        if ($request_method = 'OPTIONS' ) {
            add_header 'Access-Control-Allow-Origin' '*';
            #
            # Om nom nom cookies
            #
            add_header 'Access-Control-Allow-Credentials' 'true';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            #
            # Custom headers and headers various browsers *should* be OK with but aren't
            #
            add_header 'Access-Control-Allow-Headers'
                'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
            #
            # Tell client that this pre-flight info is valid for 20 days
            #
            add_header 'Access-Control-Max-Age' 1728000;
            add_header 'Content-Type' 'text/plain charset=UTF-8';
            add_header 'Content-Length' 0;
            return 204;
        }
        if ($request_method = 'POST' ) {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Credentials' 'true';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers'
                'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
        }
        if ($request_method = 'GET' ) {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Credentials' 'true';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers'
                'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
        }

        # Удаляем xfsearch из адресной строки
        rewrite "^/(.*[\.]+.*)/page/([0-9]+)(/?)+$" /index.php?do=xfsearch&xf=$1&cstart=$2  last; 
        rewrite "^/(.*[\.]+.*)/?$" /index.php?do=xfsearch&xf=$1 last;
        # /Удаляем xfsearch из адресной строки
    }

    #DLE        
    # Редиректы
    rewrite "^/page/([0-9]+)(/?)$" /index.php?cstart=$1 last;

    # Сам пост
    rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),([0-9]+),(.*).html(/?)+$"
        /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&cstart=$5&news_name=$6&seourl=$6
        last;
    rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),(.*).html(/?)+$"
        /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5&seourl=$5
        last;
    rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/print:page,([0-9]+),(.*).html(/?)+$"
        /index.php?mod=print&subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5&seourl=$5
        last;
    rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*).html(/?)+$"
        /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_name=$4&seourl=$4
        last;

    rewrite "^/([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$"
        /index.php?newsid=$4&news_page=$2&cstart=$3&seourl=$5&seocat=$1
        last;
    rewrite "^/([^.]+)/page,([0-9]+),([0-9]+)-(.*).html(/?)+$"
        /index.php?newsid=$3&news_page=$2&seourl=$4&seocat=$1
        last;
    rewrite "^/([^.]+)/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$"
        /index.php?mod=print&news_page=$2&newsid=$3&seourl=$4&seocat=$1
        last;
    rewrite "^/([^.]+)/([0-9]+)-(.*).html(/?)+$"
        /index.php?newsid=$2&seourl=$3&seocat=$1
        last;

    rewrite "^/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$"
        /index.php?newsid=$3&news_page=$1&cstart=$2&seourl=$4
        last;
    rewrite "^/page,([0-9]+),([0-9]+)-(.*).html(/?)+$"
        /index.php?newsid=$2&news_page=$1&seourl=$3
        last;
    rewrite "^/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$"
        /index.php?mod=print&news_page=$1&newsid=$2&seourl=$3
        last;
    rewrite "^/([0-9]+)-(.*).html(/?)+$" /index.php?newsid=$1&seourl=$2 last;

    # За день
    rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})(/?)+$"
        /index.php?year=$1&month=$2&day=$3
        last;
    rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/page/([0-9]+)(/?)+$"
        /index.php?year=$1&month=$2&day=$3&cstart=$4
        last;

    # За весь месяц
    rewrite "^/([0-9]{4})/([0-9]{2})(/?)+$" /index.php?year=$1&month=$2 last;
    rewrite "^/([0-9]{4})/([0-9]{2})/page/([0-9]+)(/?)+$"
        /index.php?year=$1&month=$2&cstart=$3
        last;

    # Вывод за весь год
    rewrite "^/([0-9]{4})(/?)+$" /index.php?year=$1 last;
    rewrite "^/([0-9]{4})/page/([0-9]+)(/?)+$" /index.php?year=$1&cstart=$2 last;

    # вывод отдельному тегу
    rewrite "^/tags/([^/]*)(/?)+$" /index.php?do=tags&tag=$1 last;
    rewrite "^/tags/([^/]*)/page/([0-9]+)(/?)+$"
        /index.php?do=tags&tag=$1&cstart=$2
        last;

    # поиск по доп полям
    rewrite "^/xfsearch/(.*)/page/([0-9]+)(/?)+$"
        /index.php?do=xfsearch&xf=$1&cstart=$2
        last;
    rewrite "^/xfsearch/(.*)(/?)+$" /index.php?do=xfsearch&xf=$1 last;

    # вывод для отдельного юзера
    rewrite "^/user/([^/]*)/rss.xml$"
        /index.php?mod=rss&subaction=allnews&user=$1
        last;
    rewrite "^/user/([^/]*)(/?)+$" /index.php?subaction=userinfo&user=$1 last;
    rewrite "^/user/([^/]*)/page/([0-9]+)(/?)+$"
        /index.php?subaction=userinfo&user=$1&cstart=$2
        last;
    rewrite "^/user/([^/]*)/news(/?)+$" /index.php?subaction=allnews&user=$1 last;
    rewrite "^/user/([^/]*)/news/page/([0-9]+)(/?)+$"
        /index.php?subaction=allnews&user=$1&cstart=$2
        last;
    rewrite "^/user/([^/]*)/news/rss.xml(/?)+$"
        /index.php?mod=rss&subaction=allnews&user=$1
        last;

    # вывод всех последних новостей
    rewrite "^/lastnews(/?)+$" /index.php?do=lastnews last;
    rewrite "^/lastnews/page/([0-9]+)(/?)+$" /index.php?do=lastnews&cstart=$1 last;

    # вывод в виде каталога
    rewrite "^/catalog/([^/]*)/rss.xml$" /index.php?mod=rss&catalog=$1 last;
    rewrite "^/catalog/([^/]*)(/?)+$" /index.php?catalog=$1 last;
    rewrite "^/catalog/([^/]*)/page/([0-9]+)(/?)+$"
        /index.php?catalog=$1&cstart=$2
        last;

    # вывод непрочитанных статей
    rewrite "^/newposts(/?)+$" /index.php?subaction=newposts last;
    rewrite "^/newposts/page/([0-9]+)(/?)+$"
        /index.php?subaction=newposts&cstart=$1
        last;

    # вывод избранных статей
    rewrite "^/favorites(/?)+$" /index.php?do=favorites last;
    rewrite "^/favorites/page/([0-9]+)(/?)+$"
        /index.php?do=favorites&cstart=$1
        last;

    rewrite "^/rules.html$" /index.php?do=rules last;
    rewrite "^/statistics.html$" /index.php?do=stats last;
    rewrite "^/addnews.html$" /index.php?do=addnews last;
    rewrite "^/rss.xml$" /index.php?mod=rss last;
    rewrite "^/sitemap.xml$" /uploads/sitemap.xml last;

    if (!-d $request_filename) {
        rewrite "^/([^.]+)/page/([0-9]+)(/?)+$"
            /index.php?do=cat&category=$1&cstart=$2
            last;
        rewrite "^/([^.]+)/?$" /index.php?do=cat&category=$1 last;
    }

    if (!-f $request_filename) {
        rewrite "^/([^.]+)/rss.xml$" /index.php?mod=rss&do=cat&category=$1 last;
        rewrite "^/page,([0-9]+),([^/]+).html$"
            /index.php?do=static&page=$2&news_page=$1
            last;
        rewrite "^/print:([^/]+).html$" /index.php?mod=print&do=static&page=$1 last;
    }

    if (!-f $request_filename) {
        rewrite "^/([^/]+).html$" /index.php?do=static&page=$1 last;
    }

    # More DLE
    location ~* (uploads|uploads/fotos|templates|language)/.+\.php {
        deny all;
    }

    location ~* (engine/cache) {
        deny all;
    }

    location ~* (engine/editor) {
        allow all;
    }

    location ~ \.tpl$ {
        return 302 https://$server_name$request_uri;
    }

    location /sitemap {
        rewrite ^/sitemap/*$ /?do=sitemap break;
    }

    location ~ /\.ht {
        deny all;
    }

    location ~ /\.svn {
        deny all;
    }

    location ~ /\.git {
        deny all;
    }

    location ~ /\.hg {
        deny all;
    }

    location ~* \.(jpg|jpeg|gif|png|ico|swf|css|js|svg|webp|avif|webmanifest|xml)$ {
        expires 30d;
        add_header Cache-Control public;
    }

    location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
        try_files $uri =404;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi_params;
        fastcgi_send_timeout 180s;
        fastcgi_read_timeout 180s;
        fastcgi_index index.php;
        # fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_param REDIRECT_STATUS 200;
        fastcgi_buffer_size 4K;
        fastcgi_buffers 64 4k;
        fastcgi_pass php;
    }
}

 

Глобальный NGINX.CONF:

Скрытый текст

# Based on https://www.nginx.com/resources/wiki/start/topics/examples/full/#nginx-conf
user nginx;
worker_processes auto;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

load_module modules/ngx_http_brotli_static_module.so;
load_module modules/ngx_http_brotli_filter_module.so;

worker_rlimit_nofile 15000;

events {
    worker_connections 1024;
    multi_accept on;
    use epoll;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    # Modify Cache by zettend
    fastcgi_cache_path /data/tmp/nginx/fastcgi levels=1:2 keys_zone=site:100m inactive=70m max_size=512m;

    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=2r/s;
    limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;

    log_format main '$remote_addr - $remote_user [$time_local] '
    '"$request" $status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log main buffer=32k;

    add_header X-Frame-Options SAMEORIGIN;

    client_body_temp_path "/data/tmp/nginx/tmp/client_body" 1 2;
    proxy_temp_path "/data/tmp/nginx/tmp/proxy" 1 2;
    fastcgi_temp_path "/data/tmp/nginx/tmp/fastcgi" 1 2;
    scgi_temp_path "/data/tmp/nginx/tmp/scgi" 1 2;
    uwsgi_temp_path "/data/tmp/nginx/tmp/uwsgi" 1 2;

    open_file_cache max=100000 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;

    client_body_timeout 10;
    send_timeout 2;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    gzip on;
    gzip_min_length 10240;
    gzip_http_version 1.0;
    gzip_comp_level 8;
    gzip_proxied expired no-cache no-store private auth;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;

    brotli on;
    brotli_comp_level 8;
    brotli_static on;
    brotli_types application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/x-javascript application/xhtml+xml application/xml font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;

    keepalive_timeout 30;
    keepalive_requests 1000;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    client_max_body_size 80M;
    server_tokens off;

    reset_timedout_connection on;
    client_body_buffer_size 128k;

    include /etc/nginx/conf.d/*.conf;
}

 

Модули для NGINX –

  • brotli
  • geoip
  • geoip2
  • image-filter
  • modsecurity
Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, zettend сказал:

Клиентам я всегда на стадии разработки ставлю исключительно чистую версию. Лицензию они потом покупают сами. 

Ну ну. Это видно по ошибке и по трейсингу ошибки. Вы действительно думаете что нам непонятна причина ошибки и что она значит? У вас гарантированно модифицированный нелегальный дистрибутив. И спорить с этим бессмысленно.

6 часов назад, zettend сказал:

Почему тогда DLE 14.2 работает корректно?

Потому что у вас разные дистрибутивы. И дистрибутив версии 14.3 некорректен. Потому что нелегален.

6 часов назад, zettend сказал:

В любом случае вот мой Dockerfile:

Причем здесь ваша конфигурация сервера? У вас ошибка явной указывает на некорректно модифицированный дистрибутив именно DLE.

А при условии что модификаций затронула именно моменты проверки лицензий и ничего другого, это в свою очередь явно указывает на нелегальный дистрибутив. Это вы своих клиентов можете обманывать, что ставите им чистый дистрибутив. Нас подобными словами не обманешь. Так что вам бан на форуме и отказано в какой либо помощи.

 

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...