zettend 2 Опубликовано: 25 июля 2021 Рассказать Опубликовано: 25 июля 2021 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 такой проблемы нет. Цитата Ссылка на сообщение Поделиться на других сайтах
zettend 2 Опубликовано: 25 июля 2021 Рассказать Опубликовано: 25 июля 2021 Автор Сейчас проверил на PHP-FPM 7 – всё успешно работает. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 093 Опубликовано: 26 июля 2021 Рассказать Опубликовано: 26 июля 2021 20 часов назад, zettend сказал: На DLE 14.2 такой проблемы нет. Нелегальная копия DLE у вас. И дело вовсе не в версии PHP. Либо некорректно модифицированная. Других вариантов быть не может. Цитата Ссылка на сообщение Поделиться на других сайтах
zettend 2 Опубликовано: 27 июля 2021 Рассказать Опубликовано: 27 июля 2021 Автор 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 Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 093 Опубликовано: 27 июля 2021 Рассказать Опубликовано: 27 июля 2021 6 часов назад, zettend сказал: Клиентам я всегда на стадии разработки ставлю исключительно чистую версию. Лицензию они потом покупают сами. Ну ну. Это видно по ошибке и по трейсингу ошибки. Вы действительно думаете что нам непонятна причина ошибки и что она значит? У вас гарантированно модифицированный нелегальный дистрибутив. И спорить с этим бессмысленно. 6 часов назад, zettend сказал: Почему тогда DLE 14.2 работает корректно? Потому что у вас разные дистрибутивы. И дистрибутив версии 14.3 некорректен. Потому что нелегален. 6 часов назад, zettend сказал: В любом случае вот мой Dockerfile: Причем здесь ваша конфигурация сервера? У вас ошибка явной указывает на некорректно модифицированный дистрибутив именно DLE. А при условии что модификаций затронула именно моменты проверки лицензий и ничего другого, это в свою очередь явно указывает на нелегальный дистрибутив. Это вы своих клиентов можете обманывать, что ставите им чистый дистрибутив. Нас подобными словами не обманешь. Так что вам бан на форуме и отказано в какой либо помощи. 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.