Я большой поклонник использования Xdebug с Laravel (особенно в напор). Однако в последнее время происходит нечто странное (Примечание: мой xdebug отлично работает, когда я запускаю его на модульных тестах с помощью этой команды:
php -dxdebug.remote_enable = 1 -dxdebug.remote_mode = req -dxdebug.remote_port = 9000 -dxdebug.remote_host = 127.0.0.1 ./vendor/bin/phpunit
<
<?php <------- breakpoint appears here
/**
* Laravel - A PHP Framework For Web Artisans
*
* @package Laravel
* @author Taylor Otwell <[email protected]>
*/
$uri = urldecode(
parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
);
// This file allows us to emulate Apache's "mod_rewrite" functionality from the
// built-in PHP web server. This provides a convenient way to test a Laravel
// application without having installed a "real" web server software here.
if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
return false;
}
require_once __DIR__.'/public/index.php';
если я наберу команду «получить весь контекст», я получу это:
$uri = /* uninitialized */'';
пошаговое выполнение переходит к строке if ($ uri, в этом случае uri правильно отображается в contxt
когда я перехожу к концу этого файла, он сразу же переходит сюда:
/**
* Handle the PHP shutdown event.
*
* @return void
*/
public function handleShutdown()
{
if (! is_null($error = error_get_last()) && $this->isFatal($error['type'])) {
в
Illuminate\Foundation\Bootstrap\HandleExceptions->handleShutdown()
затем он сразу переходит к вороной поставщик услуг:
/**
* Register the service provider.
*/
public function register()
{
..
// Register the fatal error handler.
register_shutdown_function(function () {
if (isset($this->app['Raven_Client'])) { <---- comes here
(new Raven_ErrorHandler($this->app['Raven_Client']))->registerShutdownFunction();
}
});
в
Jenssegers\Raven\RavenServiceProvider->Jenssegers\Raven\{closure}()
тогда здесь @ Raven_Client-> onShutdown () /path/to/project/vendor/sentry/sentry/lib/Raven/Client.php:1388
public function onShutdown()
{
if (!defined('RAVEN_CLIENT_END_REACHED')) { <--
define('RAVEN_CLIENT_END_REACHED', true);
}
$this->sendUnsentErrors();
if ($this->curl_method == 'async') {
$this->_curl_handler->join();
}
}
тогда здесь @ Raven_ErrorHandler-> handleFatalError () /path/to/project/vendor/sentry/sentry/lib/Raven/ErrorHandler.php:126
public function handleFatalError()
{
unset($this->reservedMemory); <---
if (null === $error = error_get_last()) {
return;
}
if ($this->shouldCaptureFatalError($error['type'])) {
$e = new ErrorException(
@$error['message'], 0, @$error['type'],
@$error['file'], @$error['line']
);
$this->handleException($e, true);
}
тогда здесь @ Monolog \ Handler \ RotatingFileHandler -> __ destruct () /path/to/project/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php:169
public function __destruct()
{
try {
$this->close();
} catch (\Exception $e) {
// do nothing
} catch (\Throwable $e) {
// do nothing
}
}
как я могу остановить это?
я удалил поставщика услуг ворона из моего env, выполнив это:
класс AppServiceProvider расширяет ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
$env = config('app.env');
if (!$env === 'local' || !$env === 'testing') {
$this->app->register(\Jenssegers\Raven\RavenServiceProvider::class);
$this->app->alias('Raven', Jenssegers\Raven\Facades\Raven::class);
}
но теперь, когда я отлаживаю, это все еще идет здесь:
/**
* Handle the PHP shutdown event.
*
* @return void
*/
public function handleShutdown()
{
if (! is_null($error = error_get_last()) && $this->isFatal($error['type'])) {
в
Illuminate\Foundation\Bootstrap\HandleExceptions->handleShutdown()
но это пропускает воронья вещи .. так что это действительно моя проблема. Происходит ошибка, но я хотел бы отладить до я дошел до этой ошибки ..
>
curl --request POST \
--url 'http://127.0.0.1:8000/api/users/login' \
--header 'Accept: application/x.toters.v1+json' \
--header 'Content-Type: application/json' \
--header 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
--form 'email={{client_user_name}}' \
--form 'password={{general_password}}'
с другой стороны, это запрос от браузера, который не работает:
curl 'http://127.0.0.1:8000/api/users/login'
-X OPTIONS
-H 'Access-Control-Request-Method: POST'
-H 'Origin: http://localhost:3000'
-H 'Accept-Encoding: gzip, deflate, br'
-H 'Accept-Language: en-US,en;q=0.9'
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.167 Safari/537.36'
-H 'Accept: */*'
-H 'Connection: keep-alive'
-H 'Access-Control-Request-Headers: content-type' --compressed
Задача ещё не решена.
Других решений пока нет …