Как использовать .htaccess в пути open-based Synology / DSM 6.1

Я пытаюсь использовать трюк, описанный Робом Ван Арле Вот по умолчанию выполнять php-страницы в «путях, не разрешенных» для веб-сервера Synology …

Целью является создание пакетов, которые не зависят отInit_3rdparty«(этот известный пакет, который позволяет пользователям запускать php-страницы по пути, например / volumeX / @ appstore / в их Synology)

По сути, Роб предлагает вызвать скрипт, который выполняет страницу php, используя php-cgi (/ usr / local / bin / php56-cgi)

Пример: вызовите такой cgi, чтобы выполнить страницу test.php, расположенную рядом с ним.

#!/bin/sh
REDIRECT_STATUS=1 export REDIRECT_STATUS
SCRIPT_FILENAME=$(pwd)/test.php export SCRIPT_FILENAME
/usr/bin/php-cgi -d open_basedir=none $SCRIPT_FILENAME 2>&1

Это работает нормально.

Но полная идея Роба — использовать .htaccess для перенаправления вызовов на любые php-страницы в общий сценарий cgi.

.Htaccess

# Turn on rewrite engine.
RewriteEngine on

# Rewrite existing php files to the router script.
# Apache on the Synology NAS automatically redirects url
# containing '../' to the corresponding real path, before
# the router script is executed, so it's impossible to
# execute system files.
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*\.php)$ router.cgi [PT,L,QSA,NE]

router.cgi

#!/bin/sh

# Set redirect_status to 1 to get php cgi working.
REDIRECT_STATUS=1 export REDIRECT_STATUS

# Fix several $_SERVER globals.
PHP_SELF=$SCRIPT_URL export PHP_SELF
SCRIPT_NAME=$SCRIPT_URL export SCRIPT_NAME

# Strip web base from SCRIPT_URL, concat it to parent directory
# and apply realpath to construct absolute path to requested script.
WEB_BASE="/webman/3rdparty"SCRIPT_FILENAME=$(pwd)/..${SCRIPT_URL:${#WEB_BASE}}
SCRIPT_FILENAME=`realpath $SCRIPT_FILENAME`
export SCRIPT_FILENAME

# Execute the requested PHP file.
/usr/local/bin/php56-cgi -d open_basedir=none $SCRIPT_FILENAME 2>&1

Я добавил следы в cgi, и проблема в том, что он никогда не вызывается на моем DSM 6.1. Итак, мне кажется, что .htaccess не «включен». Конкретно, вызов на страницу php загружает этот файл.

Предполагается ли использование .htaccess в Synology DSM 6.1, когда DSM обращается к странице php, расположенной по недопустимому пути? Если это должно работать, что может быть неправильно настроено на NAS?

МНОГО THX в Adv. за то, что поделились своим опытом в этом!

Вот демонстрационный пакет созданный Робом, чтобы проиллюстрировать его пост.

0

Решение

Я наконец выясняю проблему. Последние версии DSM по умолчанию используют nginx вместо apache в качестве веб-сервера. И nginx есть не использует файлы htaccess.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]