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 .
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.
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 .