Silverstripe 3.x - при отправке всех форм выдается ошибка 403

Недавно я перенес сайт Silverstripe 3 на новый сервер, и теперь все отправления форм на сайте выдают ошибку 403 Forbidden (nginx).

Я читал ссылки на этот симптом, но не могу найти никаких выводов, которые, кажется, применимы к моей ситуации, поскольку ни один из них не меняет поведение. Однако мой веб-хостинг предполагает, что это может быть проблема с .htaccess.

Мой файл .htaccess в корне сайта выглядит следующим образом:

### SILVERSTRIPE START ###
<Files *.ss>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Files>

<Files web.config>
    Order deny,allow
    Deny from all
</Files>

# This denies access to all yml files, since developers might include sensitive
# information in them. See the docs for work-arounds to serve some yaml files
<Files ~ "\.ya?ml$">
    Order allow,deny
    Deny from all
</Files>

ErrorDocument 404 /assets/error-404.html
ErrorDocument 500 /assets/error-500.html

<IfModule mod_alias.c>
    RedirectMatch 403 /silverstripe-cache(/|$)
    RedirectMatch 403 /vendor(/|$)
    RedirectMatch 403 /composer\.(json|lock)
</IfModule>

<IfModule mod_rewrite.c>
    SetEnv HTTP_MOD_REWRITE On
    RewriteEngine On

    RewriteCond %{REQUEST_URI} ^(.*)$
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !\.php$
    RewriteRule .* framework/main.php?url=%1 [QSA]

    RewriteCond %{REQUEST_URI} ^(.*)/framework/main.php$
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule . %1/install.php? [R,L]

</IfModule>
### SILVERSTRIPE END ###

person T.J. Mahaffey    schedule 04.07.2014    source источник
comment
nginx не использует .htaccess.   -  person micmania1    schedule 05.07.2014
comment
Извините, да, это установка 3.x.   -  person T.J. Mahaffey    schedule 05.07.2014
comment
Вы также указываете в названии, что это 404, но в вопросе указано, что это 403. Вы можете уточнить, что из этого правда? Вы точно используете nginx? Кажется странным, что ваш хост предложит проблему с .htaccess, если вы используете nginx.   -  person micmania1    schedule 08.07.2014
comment
Разумный аргумент. Ошибка определенно 403. Приносим извинения за опечатку в заголовке. :-(   -  person T.J. Mahaffey    schedule 08.07.2014


Ответы (1)


Вы проверили свое свойство $ allowed_actions в Контроллере.

В SilverStripe 3.1.0 вам нужно определить $ allowed_actions как частный статический

См. Следующую ссылку для получения дополнительной информации

http://doc.silverstripe.org/framework/en/changelogs/3.1.0 при обновлении (информация ниже)

Статика в пользовательских классах страниц должна быть «частной» Требует действий при каждой установке SilverStripe.

Типичное сообщение об ошибке: уровень доступа к ErrorPage :: $ db должен быть общедоступным

В связи с изменением конфигурации, описанным выше, многие статические параметры в ядре теперь помечены как частные. Хотя PHP позволяет делать переменные более видимыми (например, от «частных» до «общедоступных»), он жалуется, если вы пытаетесь ограничить видимость в подклассах. Базовая структура расширяется от класса Page в вашей собственной кодовой базе (mysite /), что означает, что вам нужно изменить эту статику на частную. Те же правила применяются к контроллерам подкласса от Page_Controller.

person K Mayo    schedule 06.07.2014
comment
Вы можете разместить соответствующую информацию по ссылке? Со временем ссылки истекают, и тогда этот ответ станет бесполезным. - person SiKing; 07.07.2014
comment
Спасибо за понимание, К. Мэйо. К этому моменту я попросил хоста временно отключить nginx - просто чтобы дать нам время на настройку SS по мере необходимости. - person T.J. Mahaffey; 15.07.2014