Вопрос:

Сайт Symfony2 не возвращает 404 ошибки

apache symfony

167 просмотра

1 ответ

121 Репутация автора

Если я пытаюсь посетить любой ресурс на моем веб-сайте, который не существует (например, example.com/this/path/does/not/exist или example.com/images/fakeimage.jpg), он не возвращает ошибку 404. , Он просто зависает примерно на минуту, прежде чем истечет время ожидания, в то же время он исчерпывает мой ЦП и ОЗУ на сервере.

Я подумал, что это может быть файл .htaccess, но он такой же, как и Symfony по умолчанию.

Еще одна мысль, которая у меня возникла, заключается в том, что это может быть проблема с моим файлом Apache Vhost, но у меня есть другой сайт Symfony без проблем с той же конфигурацией / другим именем сайта.

Я немного растерялся с отладкой. Любые идеи о том, что еще я мог бы посмотреть?

--Edit-- Я нашел это в журнале:

request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /this/is/not/a/path"" at /var/www/dev/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/RouterListener.php line 176 {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): No route found for \"GET /this/is/not/a/path\" at /var/www/dev/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/RouterListener.php:176, Symfony\\Component\\Routing\\Exception\\ResourceNotFoundException(code: 0):  at /var/www/dev/app/cache/prod/appProdUrlMatcher.php:2209)"} []

сопровождаемый как 100 из них:

[2016-08-22 15:26:10] request.CRITICAL: Uncaught PHP Exception Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException: "The token storage contains no authentication token. One possible reason may be that there is no firewall configured for this URL." at /var/www/dev/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authorization/AuthorizationChecker.php line 57 {"exception":"[object] (Symfony\\Component\\Security\\Core\\Exception\\AuthenticationCredentialsNotFoundException(code: 0): The token storage contains no authentication token. One possible reason may be that there is no firewall configured for this URL. at /var/www/dev/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authorization/AuthorizationChecker.php:57)"} []

Я читал, что это может иметь какое-то отношение к security.yml в Symfony. Что-то не так в следующем, возможно?

firewalls:
        secured_area:
            pattern: ^/
            switch_user: { role: ROLE_SUPER_ADMIN, parameter: _switch_user }
            oauth:
                failure_path: "/login"
                login_path: "/login"
                check_path: /connect_check
                provider: fos_userbundle
                resource_owners:
                    facebook: "/login/check-facebook"
                    google: "/login/check-google"
                oauth_user_provider:
                    service: app.provider.oauth
            anonymous: true

        form_login:
            provider: fos_userbundle
            check_path: fos_user_security_check
            login_path: fos_user_security_login
            csrf_provider: security.csrf.token_manager
            use_referer: true

        logout:
            path: fos_user_security_logout
            target: fos_user_security_login
            success_handler: cps.sso.security.logout_success_handler
            invalidate_session: false

        access_denied_url: /
access_control:

    - { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: new$, role: ROLE_ADMIN}
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/homerecalls$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: $/reports-login, role: IS_AUTHENTICATED_ANONYMOUSLY}
    - { path: ^/article/, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/category/, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/author/, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/accounts/, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/photo/, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/fileupload/, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/services/, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/company/, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resources/, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/agents/, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/sellers/, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/buyers/, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: ROLE_ADMIN }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, role: ROLE_ADMIN }
    - { path: ^/user/, role: [ROLE_USER, ROLE_ADMIN]}
    - { path: ^/profile/, role: [ROLE_USER, ROLE_ADMIN]}
Автор: chrislebaron Источник Размещён: 22.08.2016 08:52

Ответы (1)


0 плюса

121 Репутация автора

Решение

Хорошо, я нашел решение, хотя я сомневаюсь, что у многих других будет эта проблема по той же причине, что и у меня. Этот пост дал мне правильный путь к исправлению. Ошибка Symfony2 500 вместо 404 при производстве

Я просматривал этот пост в сочетании с некоторыми ошибками, которые я получал, и понял, что несколько месяцев назад, когда я впервые изучал Symfony, я попытался включить Symfony Profiler на рабочем сервере, выполнив это в моем config.yml:

profiler:
    matcher:
        service: app.super_admin_matcher

и это в AppBundle / Profiler / SuperAdminMatcher.php:

<?php

namespace AppBundle\Profiler;

use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestMatcherInterface;

class SuperAdminMatcher implements RequestMatcherInterface
{
    protected $authorizationChecker;

    public function __construct(AuthorizationCheckerInterface $authorizationChecker)
    {
        $this->authorizationChecker = $authorizationChecker;
    }

    public function matches(Request $request)
    {
        return $this->authorizationChecker->isGranted('ROLE_SUPER_ADMIN');
    }
}

?>

Как только я удалил этот код, который мне сейчас не нужен, все снова заработало как чудо.

Автор: chrislebaron Размещён: 23.08.2016 03:54
Вопросы из категории :
32x32