Como usar o .htaccess em um caminho não baseado em base aberta do Synology / DSM 6.1

1
Estou tentando usar o truque descrito por Rob Van Aarle. nas / "> aqui para executar páginas php em" caminhos não permitidos "por padrão para o servidor web da Synology ...

O objetivo é criar pacotes que não dependam de " Init_3rdparty " (este famoso pacote que permite aos usuários executar páginas php em caminho como / volumeX / @ appstore / em sua Synology)

Basicamente, Rob sugere chamar um script que executa a página do php usando o php-cgi (/ usr / local / bin / php56-cgi)

Ex .: chame um cgi assim para executar a página test.php localizada próxima a ele.

#!/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

Isso está funcionando bem.

Mas a idéia completa do Rob é usar um .htaccess para redirecionar as chamadas para qualquer página php em direção a um script CGI genérico.

.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

Eu adicionei rastreios no cgi e o problema é que ele nunca é chamado no DSM 6.1. Então, parece-me que o .htaccess não está "habilitado". Concretamente, uma chamada para a página do php está fazendo o download desse arquivo.

Supõe-se que um .htaccess seja usado no Synology DSM 6.1, quando o DSM acessa uma página do php localizada em um caminho não permitido? Se deveria funcionar, o que poderia ser mal configurado no NAS?

MUITOS thx em adv. para compartilhar sua experiência com isso!

Aqui está o pacote de demonstração criado por Rob para ilustrar seu post.

    
por Valery Letroye 13.01.2018 / 10:14

1 resposta

0

Eu finalmente descobri o problema. As versões mais recentes do DSM estão usando o nginx por padrão em vez do apache, como um servidor da web. E o nginx está não usando arquivos htaccess .

    
por 20.01.2018 / 19:02