Я только что увидел ваше сообщение на форуме OJS3.
Для NginX попробуйте эту конфигурацию
# FORGE CONFIG (DO NOT REMOVE!)
include forge-conf/evidenciaonojs.tk/before/*;
server {
listen 80;
listen [::]:80;
server_name evidenciaonojs.tk;
root /home/forge/evidenciaonojs.tk/;
# FORGE SSL (DO NOT REMOVE!)
# ssl_certificate;
# ssl_certificate_key;
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/dhparams.pem;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
# FORGE CONFIG (DO NOT REMOVE!)
include forge-conf/evidenciaonojs.tk/server/*;
location / {
try_files $uri $uri/ /index.php?$args;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/evidenciaonojs.tk-error.log error;
error_page 404 /index.php;
location ~ ^(.+\.php)(.*)$ {
set $path_info $fastcgi_path_info;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $path_info;
fastcgi_param PATH_TRANSLATED $document_root$path_info;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
# FORGE CONFIG (DO NOT REMOVE!)
include forge-conf/evidenciaonojs.tk/after/*;
Обязательно установите:
1. cgi.fix_pathinfo=1
в PHP-FPM (в /etc/php/7.2/fpm/php .ini, вероятно).
2. security.limit_extensions = .php
в вашем конфигурационном файле пула FPM (в /etc/php/7.2/fpm/pool.d/your_site.conf)
3. disable_path_info = Off
(в OJS config.inc.php)
Перезапустите службы PHP-FPM и NginX. Затем, если это сработает, прочитайте о пороках NginX IF и «cgi.fix_pathinfo».
Вы могли использовать CGLIB для этого. Класс Mixin в состоянии генерировать динамический класс от нескольких интерфейсов / объектные делегаты:
static Mixin create(java.lang.Class[] interfaces,
java.lang.Object[] delegates)
static Mixin create(java.lang.Object[] delegates)
static Mixin createBean(java.lang.Object[] beans)
Я верю , это может ответить Вам вопрос..., хотя я не полностью уверен, что я понимаю то, что смешивание все же...
Фальсифицирование mixins в Java: http://jonaquino.blogspot.com/2005/07/java-mixin-pattern-or-faking-multiple.html
Посмотрите на http://code.google.com/p/javadude/wiki/AnnotationsMixinExample
, Это использует ряд аннотаций, которые я создал.
Примечание: я работаю над основным обновлением аннотаций, которое включает некоторую поломку API. Я планирую выпустить новую версию за следующие несколько недель.
В том смысле, что соединение Ruby - в является эквивалентом абстрактного класса Java, нет, Вы не можете реализовать соединение - в в Java. Можно приблизиться при помощи интерфейсов и таким образом определения абсолютно никакого кода в соединении - в, но Вы не можете непосредственно достигнуть того же поведения как в соединении Ruby - в.
Так как Java только поддерживает единичное наследование, которое не возможно. Взгляните на WP: Mixin.
РЕДАКТИРОВАНИЕ : Из-за комментариев об интерфейсах: прохладная вещь о mixins состоит в том, что можно объединить их, не пишущий код комбинации. С интерфейсами необходимо реализовать функциональность комбинации сами (кроме одного класса, который можно расширить)!
Я сказал бы просто состав объекта использования. Каждый раз Вы хотите добавить новую функциональность, составить другой объект в класс как участник. Если Вы хотите сделать все свои смешанные - в классах того же типа, можно использовать массив в качестве членского объекта, где каждый элемент составлен со всеми другими, и можно отправить конкретному элементу.
только что наткнулся на: http://www.berniecode.com/blog/2009/08/16/mixins-for-java/
Самый простой подход - использовать статический импорт. Это позволяет повторно использовать код, который «выглядит» как часть класса, но на самом деле определен где-то еще.
Плюсы:
Минусы:
Пример:
import static my.package.MyHelperUtility.methodDefinedInAnotherClass;
public class MyNormalCode {
public void example() {
methodDefinedInAnotherClass();
}
}