异常处理程序出错. - Laravel

coo*_*kie 115 apache laravel

这是一个与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>
Run Code Online (Sandbox Code Playgroud)

我可以用/ var/www/mydomain提供文件,例如http://mydomain.org/test.php,其中test.php包含:

<?php echo 'test';
Run Code Online (Sandbox Code Playgroud)

工作良好.

在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
Run Code Online (Sandbox Code Playgroud)

所以,当我浏览到:

http://mydomain.org/my-laravel-project/public/
Run Code Online (Sandbox Code Playgroud)

为什么我的申请报告:

Error in exception handler. 
Run Code Online (Sandbox Code Playgroud)

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

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

Jas*_*wis 245

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

chgrp -R www-data app/storage
Run Code Online (Sandbox Code Playgroud)

或者chown.

chown -R :www-data app/storage
Run Code Online (Sandbox Code Playgroud)

然后确保目录权限775.

chmod -R 775 app/storage
Run Code Online (Sandbox Code Playgroud)

来自Laravel网站:

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

  • 将组所有者更改为Web服务器通常更安全,并且不授予"全世界"对文件的完全访问权限.775是目录的默认值,因此应该足够了.chgrp -R apache app/storage (14认同)
  • 在Mac上,上述命令不起作用.但是,这个命令做了:`sudo chown -R _www app/storage`(如果需要,用你的Apache服务器名替换_www) (5认同)
  • 然后我不得不给组_write permission_:`chmod -R g + w app/storage` (4认同)
  • (y),欣赏变化!chmod 777毁了这么多孩子童年:) (3认同)

mal*_*hal 17

Laravel 5.2

chmod -R 777存储

较旧的Laravel chmod 777 app/storage/*

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

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

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

  • 认真建议777只是最明显违反安全原则的...... (11认同)
  • 同意,或者更好的是更详细的错误消息 (4认同)
  • 他们应该**不要**告诉你去www.domain.com/project/public,因为这不是运行Laravel应用程序的正确方法.您应该将您的Web服务器设置为public/*而不是更多,public/index.php是整个应用程序的唯一入口点.你可以很容易地用Apache做到这一点; 如果您正在使用nginx,那么您可能知道自己在做什么.如果您使用廉价的cPanel主机(我的哀悼),也可以轻松设置Web根目录以指向公共. (3认同)