首页 文章

异常处理程序出错 . - Laravel

提问于
浏览
113

这是一个与Laravel安装相关的问题 . 我有一个面向公众的Unix服务器设置:

<VirtualHost *:80>
ServerAdmin webmaster@mydomain.org
DocumentRoot "/var/www/mydomain"
ServerName mydomain.org
ServerAlias www.mydomain.org
ErrorLog "/var/log/mydomain.org-error_log"
CustomLog "/var/log/mydomain.org-access_log" common
</VirtualHost>

我可以使用包含以下内容的test.php来提供/ var / www / mydomain中的文件,即http://mydomain.org/test.php .

<?php echo 'test';

工作良好 .

在bash中,通过Composer安装Laravel并查看文件:

# ls /var/www/mydomain/my-laravel-project

.gitattributes  CONTRIBUTING.md artisan         composer.json   phpunit.xml readme.md       vendor
.gitignore      app             bootstrap       composer.lock   public          server.php

所以当我浏览到:

http://mydomain.org/my-laravel-project/public/

为什么我的申请报告:

Error in exception handler.

在浏览器中 - 在一个空白的白色屏幕上?我期待看到Laravel的闪屏 .

而且,日志文件也没有显示任何内容 .

6 回答

  • 1

    解决这个问题的最短途径是用sudo开始工匠 . 这将为工匠提供所需的所有权限,也不会造成任何安全问题 .

    所以开始工匠服务:

    $ php artisan serve
    

    尝试使用:

    $ sudo php artisan serve
    

    因此,您不必进行任何权限更改

  • 2

    Laravel 5.2

    chmod -R 777存储

    Older Laravel chmod 777 app / storage / *

    请注意,如果您拥有一个合理锁定的专用服务器而没有自己的用户帐户,则777不应构成任何其他安全风险 . 恶意用户必须有一些其他漏洞才能利用这一点,而在这一点上,777的许可无论如何都可能没有用 . 但是,如果您与其他不信任的用户在共享服务器上,那么您需要查看更复杂的权限或检查您的托管服务提供商是否已提供隔离 .

    他们应该把它放在快速入门文档中并提供各种设置的示例 . 您可能还必须在第一次加载后再次运行它,因为会自动创建更多目录 . 在日志中查找写入错误 .

    您的DocumentRoot也应该是/ path / to / laravel-project / public

  • 0

    我在 app/storage/sessions 文件夹中删除了旧会话,并在 app/storage 之后给了 775 权限,之后就像火了!

    chmod -R 775 app/storage
    

    祝好运!

  • 18

    更安全的选项是将存储目录组更改为您的Web服务器组(通常为 apachewww-data ,但这可能因不同的操作系统而异),并将目录中的权限保留为 775 .

    chgrp -R www-data app/storage
    

    或者 chown .

    chown -R :www-data app/storage
    

    然后确保目录权限是 775 .

    chmod -R 775 app/storage
    

    来自Laravel web site

    Laravel可能需要配置一组权限:app / storage中的文件夹需要Web服务器进行写访问 .

  • 242

    很久以前,这个潮流已经过去了,但我仍然有另外一条关于“异常处理程序错误”的建议 .

    当我运行“php artisan”时,我发生了这种情况,这是评估您的环境是否正常工作的好方法 .

    我运行它并且它给了我这个错误,在我编辑项目根目录中的工匠文件并添加try catch语句之前我无法查明问题:

    try {
        $artisan = Illuminate\Console\Application::start($app);
    }
    catch (Exception $e)
    {
        dd($e->getMessage());
    }
    

    在这一点上,我终于看到了一个启发性的信息:

    string(41) "Connection refused [tcp://127.0.0.1:6379]"
    

    在我的情况下,这是一个糟糕的redis配置,但在你的情况下可能是任何东西 .

    我希望这对某人有所帮助,或者至少下次我来到这里我会找到自己的答案 .

  • -5

    我有同样的问题,我只是使用 chmod command line 将目录app / storage的权限更改为775

相关问题