Laravel Ubuntu 16.04 返回状态码 500

Posted

技术标签:

【中文标题】Laravel Ubuntu 16.04 返回状态码 500【英文标题】:Laravel Ubuntu 16.04 returning status code 500 【发布时间】:2017-03-18 15:32:05 【问题描述】:

我刚刚将我在 localhost(使用 XAMPP)开发的 Laravel 项目部署到服务器。

我上传了所有文件,创建了一个新的 .env 文件(还有一个 app-key),运行了 composer install,创建了数据库,运行了 artisan migrate。

另外,在 /etc/apache2/sites-enabled/000-default.conf 我将 DocumentRoot 设置为 laravel 的公共目录。我还尝试编辑apache2.conf 以包含目录,Allowoverride All

但是输入我的服务器的 ip,我会重定向到登录页面(当然,我使用的是 Laravel 的Auth)。

但我得到了错误:

Failed to load resource: the server responded with a status of 500 (Internal Server Error)

我尝试按照those 的步骤进行操作,但都是一样的。除了一点,在我的apache2.conf 中我不再写 DocumentRoot,因为我已经在000-default.conf 中设置了它。我还尝试在apache2.conf 中再次设置它,但这并没有改变。

那么问题出在哪里?

我使用的是 Ubuntu 16.04。

PS:laravel 内部似乎发生了一些事情。当我去现有的路线时,我总是得到这个错误代码 500。当我去一个不存在的路线时,我得到一个错误 (NotFoundHttpException),所以路由本身似乎有点工作,但在哪里这个错误从何而来?这正是我在 XAMPP 中使用的本地文件,并且在本地运行良好......有什么想法吗?

编辑:在编辑我的日志目录以获得像 777 这样的权限后,我也遇到了 2 个错误。

都指向 storage/framework/views/ 和 storage/framework/sessions,表示“权限被拒绝”。我是否也只需要为这些目录运行 chmod 吗?

【问题讨论】:

是的,您必须递归更改所有storage 目录的权限。如果您使用的是 777,那么 sudo chmod -R 777 /path/to/laravel/storage 【参考方案1】:

如果没有日志,请检查storage/logs/laravel.log 中的错误,然后确保storage 的目录权限允许它可写775 是我通常使用的。

【讨论】:

好像没有生成日志,什么时候生成的?我将文件夹权限设置为 775。 没有一个危险信号表明权限可能是问题所在。 storage/logs 目录在那里吗?我之前处理过类似的问题,虽然我是权限,但结果我的存储目录已被删除。确保您的存储目录与默认值匹配:github.com/laravel/laravel/tree/master/storage 是的,根本没有laravel.log,目录结构很好,logs 文件夹中唯一的东西是gitignore... 我在整体配置什么的?实际上 Laravel 似乎可以工作(如前所述),因为未定义的路由会抛出此错误,而现有路由(如 /login)会返回此错误代码 500... 编辑:我尝试将日志目录的权限更改为 777,现在文件已生成,我也在浏览器中收到错误,我将编辑我的问题来代表这些,你能看看? 知道了,我自己来回答,谢谢帮助!!【参考方案2】:

好的,我知道了,基本上是权限。

我现在将storage 文件夹的所有者更改为www-data。现在它正在工作(对于任何可能遇到此问题的人)。

【讨论】:

【参考方案3】:

如果你使用 vps ubuntu,你必须通过在 putty 上使用这个命令来设置根文件夹(以及它的所有文件、文件夹)的写/读权限:

chown -R www-data:www-data /var/www/html

我试过这个命令,我的网站没有显示 500 错误

【讨论】:

以上是关于Laravel Ubuntu 16.04 返回状态码 500的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu16.04更新和下载东西报错

Laravel 项目不工作 Lampp & Ubuntu 16.04

在 Laravel - 使用 ubuntu 16.04 在 xampp 上找不到驱动程序

Laravel 项目在 Ubuntu 16.04 上未运行 php artisan serve 时无法运行

Ubuntu16.04上使用Nginx部署Laravel应用程序

ubuntu 16.04 laravel虚拟主机即使按照描述执行所有步骤也无法正常工作