【问题标题】:L5.2 PHP Fatal error: Declaration of Illuminate\Auth\SessionGuard::basicL5.2 PHP 致命错误:声明 Illuminate\Auth\SessionGuard::basic
【发布时间】:2016-01-14 20:02:53
【问题描述】:

我刚刚将我的 L5.2 应用程序推送到生产服务器。我做了一些更改,但突然出现以下错误:

     PHP Fatal error:  Declaration of Illuminate\Auth\SessionGuard::basic($field = 'email')
     must be compatible with
     Illuminate\Contracts\Auth\SupportsBasicAuth::basic($field = 'email', $extraConditions 
     = Array) in /home/forge/domain.com/bootstrap/cache/compiled.php on line 461

该应用在本地和临时服务器上运行良好。

【问题讨论】:

  • 如果某件事在一种环境中成功而在另一种环境中失败,请关注您的环境之间的不同之处。

标签: php laravel laravel-5 composer-php laravel-5.2


【解决方案1】:

只需删除 bootstrap/cache/compiled.php 文件

rm bootstrap/cache/compiled.php 然后运行 composer dump-autoload

php artisan clear-compiled

它应该可以工作

【讨论】:

    【解决方案2】:

    我解决了。

    我必须这样做:

    rm bootstrap/compiled.php
    

    【讨论】:

    • 这也适用于我。它与缓存有关。
    • 对我有用的是删除app/bootstrap/cache/compiled.php,然后运行composer dump-autoload -o
    • 是的,删除该文件可以解决错误,但几分钟后它会再次生成 - 自动?如何永久解决?
    【解决方案3】:

    我想你已经在生产环境中运行了composer update。您应该将composer.lock 复制到生产服务器(如果您还没有这样做的话)并运行composer install 以安装与本地主机上完全相同的版本

    您还应该运行php artisan clear-compiled,因为这也可能是问题所在。

    【讨论】:

      【解决方案4】:

      是的,正如其他人所说,删除该文件可以解决错误。

      但在我的情况下,该文件会在 1 分钟后自动生成一次又一次。 (所以为了保持网站运行,我需要一遍又一遍地手动删除该文件:))

      这就是我所做的:

      打开 bootstrap/compiled.php,删除所有内容并撤销该文件的写入权限。

      这对我来说效果很好。

      我知道它的最坏/临时解决方案,但除非我们知道该问题的确切原因和更好的解决方案,否则我们可以使用此解决方案。

      但是,我不建议任何人将此解决方案用于生产站点,但您可以将它用于像我这样的演示站点。

      【讨论】:

        猜你喜欢
        • 2019-12-05
        • 2016-05-26
        • 2019-09-13
        • 2020-12-18
        • 1970-01-01
        • 1970-01-01
        • 2019-02-05
        • 1970-01-01
        • 2020-01-13
        相关资源
        最近更新 更多