标签: laravel-7

Laravel Sanctum 与 Passport

这2个有什么区别?哪个更适合简单的 VueJS 应用程序?我已经阅读了他们的文档几次,但仍然很困惑。非常感谢。

laravel laravel-passport laravel-7 laravel-sanctum

40
推荐指数
1
解决办法
2万
查看次数

LogicException:请确保已安装并启用 PHP Redis 扩展

Laravel 版本:7.5.0 PHP 版本:7.2 数据库驱动和版本:Redis

一切正常,但突然出现此错误,我将 phpredis 更改为 predis 但错误相同。

重现步骤:我正在调用事件函数 event(new ChatsEvent($data));

LogicException: Please make sure the PHP Redis extension is installed and enabled. in /home/user/public_html/vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php:76
Stack trace:
#0 /home/user/public_html/vendor/laravel/framework/src/Illuminate/Support/helpers.php(428): Illuminate\Redis\Connectors\PhpRedisConnector->Illuminate\Redis\Connectors\{closure}(Object(Illuminate\Support\Facades\Redis))
#1 /home/user/public_html/vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php(104): tap(Object(Illuminate\Support\Facades\Redis), Object(Closure))
#2 /home/user/public_html/vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php(27): Illuminate\Redis\Connectors\PhpRedisConnector->createClient(Array)
#3 /home/user/public_html/vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php(31): Illuminate\Redis\Connectors\PhpRedisConnector->Illuminate\Redis\Connectors\{closure}()
#4 /home/user/public_html/vendor/laravel/framework/src/Illuminate/Redis/RedisManager.php(111): Illuminate\Redis\Connectors\PhpRedisConnector->connect(Array, Array)
#5 /home/user/public_html/vendor/laravel/framework/src/Illuminate/Redis/RedisManager.php(90): Illuminate\Redis\RedisManager->resolve('default')
#6 /home/user/public_html/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/RedisBroadcaster.php(108): Illuminate\Redis\RedisManager->connection('default')
#7 /home/user/public_html/vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastEvent.php(64): Illuminate\Broadcasting\Broadcasters\RedisBroadcaster->broadcast(Array, 'ChatsEvent', Array)
#8 [internal function]: Illuminate\Broadcasting\BroadcastEvent->handle(Object(Illuminate\Broadcasting\Broadcasters\RedisBroadcaster))
#9 /home/user/public_html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(32): call_user_func_array(Array, Array)
#10 /home/user/public_html/vendor/laravel/framework/src/Illuminate/Container/Util.php(36): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#11 /home/user/public_html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(90): Illuminate\Container\Util::unwrapIfClosure(Object(Closure))
#12 /home/user/public_html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(34): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#13 /home/user/public_html/vendor/laravel/framework/src/Illuminate/Container/Container.php(592): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, …
Run Code Online (Sandbox Code Playgroud)

redis laravel predis laravel-events laravel-7

27
推荐指数
5
解决办法
3万
查看次数

任何 AWS EB Laravel 路由都出现 404 Not Found nginx/1.16.1

我刚刚在 AWS Elastic beanstalk 上部署了一个新的 laravel 7 应用程序。我注意到他们将 Apache 服务器更改为 Nginx 服务器。

https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-php.html

这是我的 api 后端 URL:http : //mappab-api-staging.mappab.com.br/

这是登录路线:http : //mappab-api-staging.mappab.com.br/login - 404 状态。

你有没有遇到同样的问题?我该如何解决?

我的 php.conf 放在 /etc/nginx/conf.d/elasticbeanstalk/ 是:

root /var/www/html/public;

index index.php index.html index.htm;

location / {
   try_files $uri $uri/ /index.php?$query_string;
}

location ~ /\.ht {
   deny all;
}

location ~ /.well-known {
   allow all;
}

location ~ \.(php|phar)(/.*)?$ {
    fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$;

    fastcgi_intercept_errors on;
    fastcgi_index  index.php;

    fastcgi_param  QUERY_STRING       $query_string;
    fastcgi_param  REQUEST_METHOD     $request_method;
    fastcgi_param  CONTENT_TYPE       $content_type; …
Run Code Online (Sandbox Code Playgroud)

php nginx amazon-web-services laravel-7

17
推荐指数
4
解决办法
9407
查看次数

空标签在 PhpStorm (Laravel 7) 中的某些浏览器中不起作用警告

当我想使用 Laravel 7 组件时,PhpStorm 显示一个烦人的警告。我该如何解决此类行为或禁用此警告?

示例警告

intellij-idea phpstorm laravel-7

12
推荐指数
1
解决办法
2809
查看次数

Laravel 6-7 如何覆盖/更改供应商类?

我最近遇到了一个问题,我需要更改 Laravel 的供应商文件之一以获得所需的结果。该文件是vendor/laravel/framework/Illuminate/Routing/CompileRouteCollection.php.

在该文件内,需要更改一个函数。

protected function requestWithoutTrailingSlash(Request $request)
{
    $trimmedRequest = Request::createFromBase($request);

    $parts = explode('?', $request->server->get('REQUEST_URI'), 2);

    $trimmedRequest->server->set(
        'REQUEST_URI', rtrim($parts[0], '/').(isset($parts[1]) ? '?'.$parts[1] : '')
    );

    return $trimmedRequest;
}
Run Code Online (Sandbox Code Playgroud)

更具体地说,这部分:rtrim($parts[0], '/'). 为了使我的部分路线正常工作,需要删除最后的 / 。

我尝试在里面创建我自己的自定义类:App\Helpers\CompiledRouteCollection.php. 我在其中复制上面列出的函数并进行自己的更改。

应用\Helpers\CompiledRouteCollection.php

namespace App\Helpers;

use Illuminate\Http\Request;

class CompiledRouteCollection extends \Illuminate\Routing\CompiledRouteCollection
{
    protected function requestWithoutTrailingSlash(Request $request)
    {
        $trimmedRequest = Request::createFromBase($request);

        $parts = explode('?', $request->server->get('REQUEST_URI'), 2);

        $trimmedRequest->server->set(
            'REQUEST_URI', rtrim($parts[0], '').(isset($parts[1]) ? '?'.$parts[1] : '')
        );

        return $trimmedRequest;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我进入 App\Providers\AppServiceProvider …

php laravel composer-php laravel-6 laravel-7

11
推荐指数
2
解决办法
2万
查看次数

Laravel 7 - 停止处理作业并清除队列

我在 AWS 上有一个生产系统并使用 Laravel Forge。有一个正在处理作业的默认队列。

我已经创建了许多作业,现在希望删除它们(因为它们需要很多小时才能完成,而且我意识到我的输入数据很糟糕)。我创建了一个具有良好数据的新作业,但只有在所有其他作业完成后才会对其进行处理。

如何删除所有作业?

redis它之前是使用队列驱动程序设置的。我不知道如何删除作业,因此我将驱动程序切换到database,并重新启动服务器,认为这至少会让作业停止处理。然而,令我沮丧的是,它们仍在继续处理:-(

我什至从 forge ui 中删除了工作程序并重新启动了服务器:作业仍在处理。

为什么作业会继续被处理?

我怎样才能阻止他们?

laravel laravel-forge laravel-queue laravel-7

11
推荐指数
1
解决办法
4万
查看次数

日期序列化后 Laravel 7 中的时区错误

我正在开发一个新的 Laravel 7.1 应用程序(不是升级)但似乎使用日期序列化会丢失时区。

配置/app.php

'timezone' => 'Europe/Zurich',
Run Code Online (Sandbox Code Playgroud)

修补匠的例子

>>> \Carbon\Carbon::parse('2020-06-22')->timezone
=> Carbon\CarbonTimeZone {#3251
     timezone: Europe/Zurich (+01:00),
   }
Run Code Online (Sandbox Code Playgroud)

Laravel 7 使用 toJson()

>>> \Carbon\Carbon::parse('2020-06-22')->toJson()
=> "2020-06-21T22:00:00.000000Z"
Run Code Online (Sandbox Code Playgroud)

所以,当我解析日期时,我没有得到正确的日期。

>>> new \Carbon\Carbon('2020-06-21T22:00:00.000000Z')
=> Carbon\Carbon @1592776800 {#3266
     date: 2020-06-21 22:00:00.0 +00:00,
     timezone: "Z",
   }

>>> (new \Carbon\Carbon('2020-06-21T22:00:00.000000Z'))->format('Y-m-d')
=> "2020-06-21"

Run Code Online (Sandbox Code Playgroud)

目前我正在这样做

$date = Carbon::parse('2020-06-21T22:00:00.000000Z')
    ->setTimezone(config('app.timezone'));
Run Code Online (Sandbox Code Playgroud)

作为替代方案,我可以更改模型中的默认日期格式,如文档中所述

/**
 * Prepare a date for array / JSON serialization.
 *
 * @param  \DateTimeInterface  $date
 * @return string
 */
protected function serializeDate(DateTimeInterface $date)
{
    return $date->toIso8601String(); …
Run Code Online (Sandbox Code Playgroud)

php php-carbon laravel-7

10
推荐指数
1
解决办法
3940
查看次数

为 Laravel sanctum 获取 401 未授权

我正在将 Laravel Sanctum 与 Vuejs SPA 一起使用。两者都驻留在同一个顶级域中

Laravel backend : app.demo.localhost
Vue SPA : app-spa.demo.localhost
Run Code Online (Sandbox Code Playgroud)

当使用 axios 从 VueJS SPA 调用时登录和注销(端点)工作正常,并且 XSRF-TOKEN 已成功设置,但是当我调用其他 api 端点时,它给了我 401 未经授权。

在 axios 中,这是设置

axios.defaults.withCredentials = true;
Run Code Online (Sandbox Code Playgroud)

我有以下配置

在 Laravel .env 中

SESSION_DRIVER=cookie
SESSION_DOMAIN=.demo.localhost
SANCTUM_STATEFUL_DOMAINS=app-spa.demo.localhost
Run Code Online (Sandbox Code Playgroud)

在路由/Api.php

Route::middleware('auth:sanctum')->get('api/user', function (Request $request) {
   return $request->user();
});
Run Code Online (Sandbox Code Playgroud)

在 cors.php

'paths' => ['api/*', 'sanctum/csrf-cookie', 'login', 'logout'],

'allowed_methods' => ['*'],

'allowed_origins' => ['*'],

'allowed_origins_patterns' => [],

'allowed_headers' => ['*'],

'exposed_headers' => [],

'max_age' => 0,

'supports_credentials' => true,
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

vue.js axios laravel-7 laravel-sanctum

10
推荐指数
4
解决办法
1万
查看次数

预期响应代码 250,但得到代码“550”,消息为“550 5.7.1 Relaying denied”

当我尝试使用 mailgun 和 laravel 7 发送电子邮件时,我收到此错误预期响应代码 250,但收到代码“550”,并显示消息“550 5.7.1 中继被拒绝”。但我不知道该怎么办

email mailgun laravel-7

8
推荐指数
1
解决办法
6727
查看次数

Laravel 7 - 嵌套资源路由中的范围问题

路线:

我有一个这样的嵌套资源路由定义:

Route::resource('posts.comments', 'CommentController');
Run Code Online (Sandbox Code Playgroud)

这会产生以下路线:

+--------+-----------+--------------------------------------+------------------------+------------------------------------------------+------------+
| Domain | Method    | URI                                  | Name                   | Action                                         | Middleware |
+--------+-----------+--------------------------------------+------------------------+------------------------------------------------+------------+
|        | GET|HEAD  | posts/{post}/comments                | posts.comments.index   | App\Http\Controllers\CommentController@index   | web        |
|        | POST      | posts/{post}/comments                | posts.comments.store   | App\Http\Controllers\CommentController@store   | web        |
|        | GET|HEAD  | posts/{post}/comments/create         | posts.comments.create  | App\Http\Controllers\CommentController@create  | web        |
|        | GET|HEAD  | posts/{post}/comments/{comment}      | posts.comments.show    | App\Http\Controllers\CommentController@show    | web        |
|        | PUT|PATCH | posts/{post}/comments/{comment}      | posts.comments.update  | App\Http\Controllers\CommentController@update  | web        | …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-7

8
推荐指数
1
解决办法
1184
查看次数