Yii an internal server error occurred

Сообщение lolka » 2016.09.02, 16:47

lolka

Сообщения: 143
Зарегистрирован: 2013.05.05, 20:59

lolka

Сообщения: 143
Зарегистрирован: 2013.05.05, 20:59

Re: После установки yii2 выдает ошибку An internal server error occurred.

Сообщение

lolka » 2016.09.02, 16:47

ошибка при выполнении этих команд

Deprecation Notice: The ComposerPackageLinkConstraintMultiConstraint class is deprecated, use ComposerSemverConstraintMultiConstraint instead. in phar:///var/www/site/composer.phar/src/Composer/Package/LinkConstraint/MultiConstraint.php:17
Deprecation Notice: The ComposerPackageLinkConstraintLinkConstraintInterface interface is deprecated, use ComposerSemverConstraintConstraintInterface instead. in phar:///var/www/site/composer.phar/src/Composer/Package/LinkConstraint/LinkConstraintInterface.php:17

Composer could not find a composer.json file in /var/www/site
To initialize a project, please create a composer.json file as described in the https://getcomposer.org/ «Getting Started» section

lolka

Сообщения: 143
Зарегистрирован: 2013.05.05, 20:59

Re: После установки yii2 выдает ошибку An internal server error occurred.

Сообщение

lolka » 2016.09.02, 17:06

чет не очень , ошибки за ошибками

[ReflectionException]
Class FxpComposerAssetPluginRepositoryNpmRepository does not exist

[ErrorException]
Declaration of FxpComposerAssetPluginRepositoryAbstractAssetsRepository
::whatProvides() should be compatible with ComposerRepositoryComposerRepo
sitory::whatProvides(ComposerDependencyResolverPool $pool, $name, $bypass
Filters = false)

пробовал сделать следующее
php composer.phar global update fxp/composer-asset-plugin —no-plugins

не помогло

Аватара пользователя

rugabarbo

Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

lolka

Сообщения: 143
Зарегистрирован: 2013.05.05, 20:59

Re: После установки yii2 выдает ошибку An internal server error occurred.

Сообщение

lolka » 2016.09.02, 17:19

ну выводится эта же ошибка

[ReflectionException]
Class FxpComposerAssetPluginRepositoryNpmRepository does not exist

[ErrorException]
Declaration of FxpComposerAssetPluginRepositoryAbstractAssetsRepository
::whatProvides() should be compatible with ComposerRepositoryComposerRepo
sitory::whatProvides(ComposerDependencyResolverPool $pool, $name, $bypass
Filters = false)

при выполнении любой команды

Аватара пользователя

rugabarbo

Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Аватара пользователя

rugabarbo

Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: После установки yii2 выдает ошибку An internal server error occurred.

Сообщение

rugabarbo » 2016.09.02, 17:44

Есть предположение, что стоит старый плагин композера, который мешает ему работать.
Исходя из этого можно попробовать так:

1. Убрать старый плагин:

Код: Выделить всё

composer global remove "fxp/composer-asset-plugin" 

2. Почистить кэш:

А лучше грохнуть целиком папку ~/.composer:

3. Обновить композер:

4. Поставить более новый плагин, например:

Код: Выделить всё

composer global require "fxp/composer-asset-plugin:*" 

5. Далее стандартно:

Если будете пробовать, то к каждой команде укажите полученный вывод в консоли.

Аватара пользователя

rugabarbo

Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Аватара пользователя

rugabarbo

Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Yii has an yiisoft/error-handler package that makes error handling
a much more pleasant experience than before. In particular, the Yii error handler provides the following:

  • PSR-15 middleware for catching unhandled errors.
  • PSR-15 middleware for mapping certain exceptions to custom responses.
  • Production and debug modes.
  • Debug mode displays details, stacktrace, has dark and light themes and handy buttons to search for error without typing.
  • Takes PHP settings into account.
  • Handles out of memory errors, fatals, warnings, notices and exceptions.
  • Can use any PSR-3 compatible logger for error logging.
  • Detects response format based on mime type of the request.
  • Supports responding with HTML, plain text, JSON, XML and headers out of the box.
  • Has ability to implement your own error rendering for additional types.

This guide describes how to use the error handler in the Yii framework,
for information about using it separately from Yii, see the package description.

Using error handler

The error handler consists of two parts. One part is YiisoftErrorHandlerMiddlewareErrorCatcher middleware that,
when registered, catches exceptions that may appear during middleware stack execution and passes them to the handler.
Another part is the error handler itself, YiisoftErrorHandlerErrorHandler, that is catching exceptions occurring
outside the middleware stack and fatal errors. The handler also converts warnings and notices to exceptions and does
more handy things.

Error handler is registered in the application itself. Usually it happens in ApplicationRunner. By dafault, handler
configuration comes from the container. You may configure it in the application configuration,
config/web.php like the following:

use PsrLogLoggerInterface;
use YiisoftErrorHandlerErrorHandler;
use YiisoftErrorHandlerRendererHtmlRenderer;
use YiisoftErrorHandlerThrowableRendererInterface;

return [
    // ...
    ErrorHandler::class => static function (LoggerInterface $logger, ThrowableRendererInterface $renderer) {
        $errorHandler = new ErrorHandler($logger, $renderer);
        // Set the size of the reserved memory 512KB. Defaults to 256KB.
        $errorHandler->memoryReserveSize(524_288);
        return $errorHandler;
    },
    
    ThrowableRendererInterface::class => static fn () => new HtmlRenderer([
        // Defaults to package file "templates/production.php".
        'template' => '/full/path/to/production/template/file',
        // Defaults to package file "templates/development.php".
        'verboseTemplate' => '/full/path/to/development/template/file',
        // Maximum number of source code lines to be displayed. Defaults to 19.
        'maxSourceLines' => 20,
        // Maximum number of trace source code lines to be displayed. Defaults to 13.
        'maxTraceLines' => 5,
        // Trace header line with placeholders (file, line, icon) to be be substituted. Defaults to null.
        'traceHeaderLine' => '<a href="ide://open?file={file}&line={line}">{icon}</a>',
    ]),
    // ...
];

As aforementioned, the error handler turns all non-fatal PHP errors into catchable exceptions
(YiisoftErrorHandlerExceptionErrorException). This means you can use the following code to deal with PHP errors:

try {
    10 / 0;
} catch (YiisoftErrorHandlerExceptionErrorException $e) {
    // Write log or something else.
}
// execution continues...

The package contains another middleware, YiisoftErrorHandlerMiddlewareExceptionResponder.
This middleware maps certain exceptions to custom responses. Configure it in the application configuration as follows:

use PsrHttpMessageResponseFactoryInterface;
use YiisoftErrorHandlerMiddlewareExceptionResponder;
use YiisoftInjectorInjector;

return [
    // ...
    ErrorHandler::class => static function (ResponseFactoryInterface $responseFactory, Injector $injector) {
        $exceptionMap = [
            // Status code with which the response will be created by the factory.
            MyNotFoundException::class => 404,
            // PHP callable that must return a `PsrHttpMessageResponseInterface`.
            MyHttpException::class => static fn (MyHttpException $exception) => new MyResponse($exception),
            // ...
        ],
        
        return new ExceptionResponder($exceptionMap, $responseFactory, $injector);
    },
];

Note that when configuring application middleware stack, YiisoftErrorHandlerMiddlewareExceptionResponder must
be placed before YiisoftErrorHandlerMiddlewareErrorCatcher.

Rendering error data

Error data could be rendered into a certain format by one of the renderers. The following renderers are available
out of the box:

  • YiisoftErrorHandlerRendererHeaderRenderer — Renders error into HTTP headers. It is used for HEAD request.
  • YiisoftErrorHandlerRendererHtmlRenderer — Renders error into HTML.
  • YiisoftErrorHandlerRendererJsonRenderer — Renders error into JSON.
  • YiisoftErrorHandlerRendererPlainTextRenderer — Renders error into plain text.
  • YiisoftErrorHandlerRendererXmlRenderer — Renders error into XML.

The renderer produces detailed error data depending on whether debug mode is enabled or disabled.

Example of headers rendering with debugging mode turned off:

...
X-Error-Message: An internal server error occurred.
...

Example of headers rendering with debugging mode turned on:

...
X-Error-Type: Error
X-Error-Message: Call to undefined function AppControllermyFunc()
X-Error-Code: 0
X-Error-File: /var/www/yii/app/src/Controller/SiteController.php
X-Error-Line: 21
...

Example of JSON rendering output with debugging mode turned off:

{"message":"An internal server error occurred."}

Example of JSON rendering output with debugging mode turned on:

{
    "type": "Error",
    "message": "Call to undefined function App\Controller\myFunc()",
    "code": 0,
    "file": "/var/www/yii/app/src/Controller/SiteController.php",
    "line": 21,
    "trace": [
        {
            "function": "index",
            "class": "App\Controller\SiteController",
            "type": "->"
        },
        {
            "file": "/var/www/yii/app/vendor/yiisoft/injector/src/Injector.php",
            "line": 63,
            "function": "invokeArgs",
            "class": "ReflectionFunction",
            "type": "->"
        },
        ...
    ]
}

Example of HTML rendering with debugging mode turned off:

View production

Example of HTML rendering with debugging mode on and a light theme:

View development with light theme

Example of HTML rendering with debugging mode on and a dark theme:

View development with dark theme

The error catcher chooses how to render an exception based on accept HTTP header. If it is text/html or any unknown
content type, it will use the error or exception HTML template to display errors. For other mime types, the error handler will
choose different renderer that is registered within the error catcher. By default, JSON, XML and plain text are supported.

Implementing your own renderer

You may customize the error response format by providing your own instance of
YiisoftErrorHandlerThrowableRendererInterface when registering error catcher middleware.

use PsrHttpMessageServerRequestInterface;
use YiisoftErrorHandlerErrorData;
use YiisoftErrorHandlerThrowableRendererInterface;

final class MyRenderer implements ThrowableRendererInterface
{
    public function render(Throwable $t, ServerRequestInterface $request = null): ErrorData
    {
        return new ErrorData($t->getMessage());
    }

    public function renderVerbose(Throwable $t, ServerRequestInterface $request = null): ErrorData
    {
        return new ErrorData(
            $t->getMessage(),
            ['X-Custom-Header' => 'value-header'], // Headers to be added to the response.
        );
    }
};

You may configure it in the application configuration config/web.php:

use PsrContainerContainerInterface;
use PsrHttpMessageResponseFactoryInterface;
use YiisoftErrorHandlerErrorHandler;
use YiisoftErrorHandlerMiddlewareErrorCatcher;

return [
    // ...
    ErrorCatcher::class => static function (ContainerInterface $container): ErrorCatcher {
        $errorCatcher = new ErrorCatcher(
            $container->get(ResponseFactoryInterface::class),
            $container->get(ErrorHandler::class),
            $container,
        );
        // Returns a new instance without renderers by the specified content types.
        $errorCatcher = $errorCatcher->withoutRenderers('application/xml', 'text/xml');
        // Returns a new instance with the specified content type and renderer class.
        return $errorCatcher->withRenderer('my/format', new MyRenderer());
    },
    // ...
];

Friendly exceptions

Yii error renderer supports friendly exceptions that allows you to
make error handling even more pleasant experience for your team. The idea is to provide a readable name and possible
solutions to the problem:

use YiisoftFriendlyExceptionFriendlyExceptionInterface;

class RequestTimeoutException extends RuntimeException implements FriendlyExceptionInterface
{
    public function getName(): string
    {
        return 'Request timed out';
    }
    
    public function getSolution(): ?string
    {
        return <<<'SOLUTION'
Likely it is a result of resource request is not responding in a timely fashion. Try increasing timeout.
SOLUTION;
    }
}

When such exception is thrown, error renderer would display the name and the solution if debug mode is turned on.

Содержание

  1. Yii Framework
  2. После установки yii2 выдает ошибку An internal server error occurred.
  3. После установки yii2 выдает ошибку An internal server error occurred.
  4. Re: После установки yii2 выдает ошибку An internal server error occurred.
  5. Re: После установки yii2 выдает ошибку An internal server error occurred.
  6. Re: После установки yii2 выдает ошибку An internal server error occurred.
  7. Re: После установки yii2 выдает ошибку An internal server error occurred.
  8. Re: После установки yii2 выдает ошибку An internal server error occurred.
  9. Re: После установки yii2 выдает ошибку An internal server error occurred.
  10. Re: После установки yii2 выдает ошибку An internal server error occurred.
  11. Re: После установки yii2 выдает ошибку An internal server error occurred.
  12. Re: После установки yii2 выдает ошибку An internal server error occurred.
  13. Re: После установки yii2 выдает ошибку An internal server error occurred.
  14. И за чего могла возникнуть ошибка Internal Server Error?
  15. Internal server error 500 after making changes #4
  16. Comments
  17. Internal server error 500 after making changes #4
  18. Comments
  19. Yii Framework
  20. Как правильно обработать исключения
  21. Как правильно обработать исключения
  22. Re: Как правильно обработать исключения
  23. Re: Как правильно обработать исключения
  24. Re: Как правильно обработать исключения
  25. Re: Как правильно обработать исключения
  26. Re: Как правильно обработать исключения
  27. Re: Как правильно обработать исключения

Yii Framework

После установки yii2 выдает ошибку An internal server error occurred.

После установки yii2 выдает ошибку An internal server error occurred.

Сообщение lolka » 2016.09.02, 14:49

Re: После установки yii2 выдает ошибку An internal server error occurred.

Сообщение futbolim » 2016.09.02, 14:54

Re: После установки yii2 выдает ошибку An internal server error occurred.

Сообщение lolka » 2016.09.02, 14:54

Re: После установки yii2 выдает ошибку An internal server error occurred.

Сообщение futbolim » 2016.09.02, 15:03

Re: После установки yii2 выдает ошибку An internal server error occurred.

Сообщение futbolim » 2016.09.02, 15:05

Re: После установки yii2 выдает ошибку An internal server error occurred.

Сообщение futbolim » 2016.09.02, 15:05

Re: После установки yii2 выдает ошибку An internal server error occurred.

Сообщение lolka » 2016.09.02, 16:21

не существуют папки и файлы в:

vendor/bower/jquery/dist
vendor/bower/bootstrap/dist
они же при установке автоматом должны создаваться?

Re: После установки yii2 выдает ошибку An internal server error occurred.

Сообщение rugabarbo » 2016.09.02, 16:33

Re: После установки yii2 выдает ошибку An internal server error occurred.

Сообщение lolka » 2016.09.02, 16:47

ошибка при выполнении этих команд

Deprecation Notice: The ComposerPackageLinkConstraintMultiConstraint class is deprecated, use ComposerSemverConstraintMultiConstraint instead. in phar:///var/www/site/composer.phar/src/Composer/Package/LinkConstraint/MultiConstraint.php:17
Deprecation Notice: The ComposerPackageLinkConstraintLinkConstraintInterface interface is deprecated, use ComposerSemverConstraintConstraintInterface instead. in phar:///var/www/site/composer.phar/src/Composer/Package/LinkConstraint/LinkConstraintInterface.php:17

Composer could not find a composer.json file in /var/www/site
To initialize a project, please create a composer.json file as described in the https://getcomposer.org/ «Getting Started» section

Re: После установки yii2 выдает ошибку An internal server error occurred.

Сообщение rugabarbo » 2016.09.02, 16:57

Re: После установки yii2 выдает ошибку An internal server error occurred.

Сообщение lolka » 2016.09.02, 17:06

чет не очень , ошибки за ошибками

[ReflectionException]
Class FxpComposerAssetPluginRepositoryNpmRepository does not exist

[ErrorException]
Declaration of FxpComposerAssetPluginRepositoryAbstractAssetsRepository
::whatProvides() should be compatible with ComposerRepositoryComposerRepo
sitory::whatProvides(ComposerDependencyResolverPool $pool, $name, $bypass
Filters = false)

Источник

И за чего могла возникнуть ошибка Internal Server Error?

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at webmaster@i8y6o20x.idua.org to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.

В чем может быть проблема? может я что-то не так сделал при переносе? Подскажите, пожалуйста, как решить?

  • Вопрос задан более трёх лет назад
  • 1103 просмотра

Простой 5 комментариев

Ошибка 500 чаще всего возникает из-за того, что в файл .htaccess вносятся директивы, которые явно противоречат настройкам веб-сервера или их дублируют. Записи о подобных ошибках будут внесены в лог ошибок сайта (в ISPManager, например, в разделе “Журнал”). В частности, это могут быть директивы для изменения настроек php — тогда строка будет начинаться с
php_flag
или
php_value

Поскольку на хостинге php работает в режиме fastCGI, а не mod_apache, то настройки php подобным образом выполнять недопустимо — их следует вносить в файл php.ini

А также директивы связанные с работой с симлинками: к примеру, Options +SymLinksIfOwnerMatch будет выдавать ошибку, строку следует заменить на Options +FollowSymLinks

Эта ошибка может возникнуть и при попытке обработать слишком большой файл, — в этом случае проверьте папки вашего сайта, хранящие логи.

Лучше всего дебажить ошибку через логи веб-сервера, рекомендую погрузится в журналы сервера и детально почитать о чем пытается сообщить веб-сервер.

На крайний случай обратитесь в поддержку хостинга, часто провайдеры помогают перенести сайты на свою площадку, мигрируют как на shared-хостинг так и на виртуальные сервера или выделенные физические железки.

Источник

Internal server error 500 after making changes #4

HI,
I am getting error 500 as below after changing the files as per your instructions. any help is appreciated.
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at admin@example.com to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

d 4024:tid 1012] [client ::1:61355] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace.
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3590): [client ::1:61355] AH00121: r->uri = /index.php
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3596): [client ::1:61355] AH00122: redirected from r->uri = /index.php
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3596): [client ::1:61355] AH00122: redirected from r->uri = /index.php
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3596): [client ::1:61355] AH00122: redirected from r->uri = /index.php
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3596): [client ::1:61355] AH00122: redirected from r->uri = /index.php
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3596): [client ::1:61355] AH00122: redirected from r->uri = /index.php
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3596): [client ::1:61355] AH00122: redirected from r->uri = /index.php
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3596): [client ::1:61355] AH00122: redirected from r->uri = /index.php
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3596): [client ::1:61355] AH00122: redirected from r->uri = /index.php
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3596): [client ::1:61355] AH00122: redirected from r->uri = /index.php
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3596): [client ::1:61355] AH00122: redirected from r->uri = /
[Mon Aug 31 00:15:27.882400 2015] [mpm_winnt:notice] [pid 8140:tid 612] AH00422: Parent: Received shutdown signal — Shutting down the server.
[Mon Aug 31 00:15:27.882400 2015] [mpm_winnt:debug] [pid 4024:tid 508] child.c(1158): AH00357: Child: Exit event signaled. Child process is ending.
[Mon Aug 31 00:15:27.882400 2015] [mpm_winnt:debug] [pid 4024:tid 1036] child.c(735): AH00348: Child: Accept thread exiting.
[Mon Aug 31 00:15:27.882400 2015] [mpm_winnt:debug] [pid 4024:tid 1040] child.c(735): AH00348: Child: Accept thread exiting.
[Mon Aug 31 00:15:28.883461 2015] [mpm_winnt:debug] [pid 4024:tid 508] child.c(1215): AH00359: Child: Released the start mutex
[Mon Aug 31 00:15:28.883461 2015] [mpm_winnt:debug] [pid 4024:tid 508] child.c(1227): AH00361: Child: 64 threads blocked on the completion port
[Mon Aug 31 00:15:29.884642 2015] [mpm_winnt:notice] [pid 4024:tid 508] AH00364: Child: All worker threads have exited.
[Mon Aug 31 00:15:29.888623 2015] [mpm_winnt:debug] [pid 4024:tid 508] mpm_winnt.c(1713): AH00454: Child process is exiting
[Mon Aug 31 00:15:29.920089 2015] [mpm_winnt:notice] [pid 8140:tid 612] AH00430: Parent: Child process 4024 exited successfully.
[Mon Aug 31 00:15:29.921090 2015] [core:info] [pid 8140:tid 612] AH00096: removed PID file C:/Apache24/logs/httpd.pid (pid=8140)
Starting the ‘Apache2.4’ service
The ‘Apache2.4’ service is running.

The text was updated successfully, but these errors were encountered:

Источник

Internal server error 500 after making changes #4

HI,
I am getting error 500 as below after changing the files as per your instructions. any help is appreciated.
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at admin@example.com to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

d 4024:tid 1012] [client ::1:61355] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace.
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3590): [client ::1:61355] AH00121: r->uri = /index.php
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3596): [client ::1:61355] AH00122: redirected from r->uri = /index.php
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3596): [client ::1:61355] AH00122: redirected from r->uri = /index.php
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3596): [client ::1:61355] AH00122: redirected from r->uri = /index.php
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3596): [client ::1:61355] AH00122: redirected from r->uri = /index.php
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3596): [client ::1:61355] AH00122: redirected from r->uri = /index.php
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3596): [client ::1:61355] AH00122: redirected from r->uri = /index.php
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3596): [client ::1:61355] AH00122: redirected from r->uri = /index.php
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3596): [client ::1:61355] AH00122: redirected from r->uri = /index.php
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3596): [client ::1:61355] AH00122: redirected from r->uri = /index.php
[Mon Aug 31 00:12:55.626711 2015] [core:debug] [pid 4024:tid 1012] core.c(3596): [client ::1:61355] AH00122: redirected from r->uri = /
[Mon Aug 31 00:15:27.882400 2015] [mpm_winnt:notice] [pid 8140:tid 612] AH00422: Parent: Received shutdown signal — Shutting down the server.
[Mon Aug 31 00:15:27.882400 2015] [mpm_winnt:debug] [pid 4024:tid 508] child.c(1158): AH00357: Child: Exit event signaled. Child process is ending.
[Mon Aug 31 00:15:27.882400 2015] [mpm_winnt:debug] [pid 4024:tid 1036] child.c(735): AH00348: Child: Accept thread exiting.
[Mon Aug 31 00:15:27.882400 2015] [mpm_winnt:debug] [pid 4024:tid 1040] child.c(735): AH00348: Child: Accept thread exiting.
[Mon Aug 31 00:15:28.883461 2015] [mpm_winnt:debug] [pid 4024:tid 508] child.c(1215): AH00359: Child: Released the start mutex
[Mon Aug 31 00:15:28.883461 2015] [mpm_winnt:debug] [pid 4024:tid 508] child.c(1227): AH00361: Child: 64 threads blocked on the completion port
[Mon Aug 31 00:15:29.884642 2015] [mpm_winnt:notice] [pid 4024:tid 508] AH00364: Child: All worker threads have exited.
[Mon Aug 31 00:15:29.888623 2015] [mpm_winnt:debug] [pid 4024:tid 508] mpm_winnt.c(1713): AH00454: Child process is exiting
[Mon Aug 31 00:15:29.920089 2015] [mpm_winnt:notice] [pid 8140:tid 612] AH00430: Parent: Child process 4024 exited successfully.
[Mon Aug 31 00:15:29.921090 2015] [core:info] [pid 8140:tid 612] AH00096: removed PID file C:/Apache24/logs/httpd.pid (pid=8140)
Starting the ‘Apache2.4’ service
The ‘Apache2.4’ service is running.

The text was updated successfully, but these errors were encountered:

Источник

Yii Framework

Как правильно обработать исключения

Как правильно обработать исключения

Сообщение Vic » 2016.02.27, 11:53

Постараюсь внятно изложить.

Есть формочка простая для ActiveRecord, в контроллере происходит ajax валидация. Предположим, что что-то ломается при коннекте в базе (на этапе валидации или на этапе записи данных в базу).

Я хочу получить в обоих случаях внятное сообщение пользователю об ошибке.

Вот такой костыль вроде-бы должен сработать, но как-то некрасиво выглядит:

И, например, в момент отправки письма отваливается соединение с почтовым сервером. Свифтмейлер выкидывает исключение. Я как и в случае с записью в базу, должен обернуть в try и создать новое исключение? Или есть более правильный способ поймать все непойманные исключения в одном месте и там по ходу разбираться, что произошло и выдавать наружу вразумительные странички с сообщениями?

Хотя пока писал, подумалось, что для ajax валидации должно быть свое, потому что там формат ответа другой. Или, воможно, там в клиентской части посмотреть и подправить плагин yiiform к jQuery, чтобы он на вываленный Yii json реагировал правильно — в смысле выводил ошибку куда-нибудь, если придет код ответа не 200.

Re: Как правильно обработать исключения

Сообщение sda » 2016.02.27, 13:07

Yii выдает в продакшн режиме нормальную страницу с ошибкой и кодом ответа 500. Если это был ajax, то в ответе придет ошибка в json. Вам не нужно ничего оборачивать в try catch.

Если интересно, можете посмотреть здесь https://github.com/yiisoft/yii2/blob/ma . er.php#L76 как происходит рендеринг любого непойманого исключения.

Re: Как правильно обработать исключения

Сообщение Vic » 2016.02.27, 14:14

Вот смотрите, у меня прошла первый раз валидация и все пустые поля высветились с ошибкой. Я заполнил поля, сменил пароль в базе, чтобы не было подключения, вот результат — весь стектрейс в json, а у пользователя — ничего.

Re: Как правильно обработать исключения

Сообщение sda » 2016.02.27, 15:37

Re: Как правильно обработать исключения

Сообщение Vic » 2016.02.27, 18:22


https://yadi.sk/i/RKeC3UOgpcYNT

Немного лучше, но у пользователя опять нет возможности понять — что не так.

Re: Как правильно обработать исключения

Сообщение sda » 2016.02.27, 20:17

В этом куске кода Yii для всех ошибок, которые произошли не по вине клиента конвертирует в более общую, сообщая что со стороны сервера что-то пошло не так. И это верное поведение. Не стоит лишний раз сообщать, что конкретно у вас сломалось, поскольку тем самым вы дарите любому хакеру дополнительную информацию, а обычному пользователю всё равно, что у вас там не работает.

Но если вы всё равно настойчиво хотите продолжать. Тогда можете отнаследоваться от ErrorHandler и переопределить метод ErrorHandler::convertExceptionToArray() достаточно будет удалить код приведенный выше, затем в конфиге подключить ваш ErrorHandler вместо стандартного. Тогда клиент при любом экзепшене будет получать конкретизирующее сообщение.

Для Html ошибок нужно тем или иным образом изменить этот код

Но еще раз. Я вам делать этого не советую. И ваши действия не поддерживаю. Дальше, ваша воля.

Re: Как правильно обработать исключения

Сообщение Vic » 2016.02.27, 23:16

sda писал(а): Но если вы всё равно настойчиво хотите продолжать. Тогда можете отнаследоваться от ErrorHandler и переопределить метод ErrorHandler::convertExceptionToArray() достаточно будет удалить код приведенный выше, затем в конфиге подключить ваш ErrorHandler вместо стандартного. Тогда клиент при любом экзепшене будет получать конкретизирующее сообщение.
.

Но еще раз. Я вам делать этого не советую. И ваши действия не поддерживаю. Дальше, ваша воля.

выглядит избыточно. Ну или я опять чего-то не понимаю.

И в этом кусочке

Пока у меня 2 проблемы — как дать понять пользователю, что что-то сломалось при ajax валидации и если письмо не ушло.

Для ajax валидации сделал такой костыль:

Наверное, сильно помог хакерам, но пользователь хоть тоже поймет, что случилась непоправимая беда.
Там выводится все то же стандартное сообщение о 500 ошибке.

С письмом костылем, похоже, не отделаться, придется их сохранять и отправлять по крону, пока не отправятся.

Источник

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Yield from syntax error
  • Yes of course not ошибка
  • Yellow submarine vs just error
  • Yealink w52p ошибка регистрации
  • Ydark load driver error

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии