Laravel 在共享主机上给出 500 内部错误
Posted
技术标签:
【中文标题】Laravel 在共享主机上给出 500 内部错误【英文标题】:Laravel giving 500 internal error on Shared hosting 【发布时间】:2019-09-20 13:37:16 【问题描述】:我有一个 laravel 应用程序在我的本地机器上运行良好。我刚刚将它转移到我的服务器(共享主机),并将所有内容放在 public_html 的公用文件夹中,并将其他所有内容放在 public_html 上方的一个步骤中。现在的问题是它在每条路线上显示 500 内部错误。我已将 .htaccess 代码更改为文档中的给定代码,存储和引导的文件夹权限设置为 777。
错误日志中没有任何内容,laravel 日志文件中也没有任何内容。当我安装新的 laravel 安装时,它也可以在服务器上运行。尝试用我的项目更新代码,但仍然出现 500 个内部错误。
【问题讨论】:
请检查您的存储日志文件。 尝试更改应用程序的公共路径。检查你的 server.php 文件 【参考方案1】:Laravel 默认的 .htacces 不适用于 IONOS。 这是完美的 .htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteBase /
Options +FollowSymLinks
RewriteEngine On
# Handle Authorization Header
RewriteCond %HTTP:Authorization .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%HTTP:Authorization]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_URI (.+)/$
RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^ index.php [L]
</IfModule>
【讨论】:
【参考方案2】:对于 Laravel 8 / IONOS 托管服务器,这对我有用:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteBase /
Options +FollowSymLinks
RewriteEngine On
# Handle Authorization Header
RewriteCond %HTTP:Authorization .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%HTTP:Authorization]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_URI (.+)/$
RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^ index.php [L]
</IfModule>
【讨论】:
感谢帮助我。所以基本上这里添加了 RewriteBase / 和 Options + FollowSymLinks。剩下的是“Laravel 8 默认”【参考方案3】:如果您使用的是 IONOS(或 1and1,可能也适用于其他...),.htaccess
文件应该与 laravel 公共目录中的默认文件不同。
用这个替换它的内容:
RewriteBase /
Options +FollowSymLinks
RewriteEngine On
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^ index.php [L]
【讨论】:
你是救生员。实际上这一行是最重要的:RewriteBase /。我将使用适用于 Laravel 8 的 IONOS 的有效 .htaccess 更新答案。【参考方案4】:错误可能是由于.env文件的配置。因为你的问题不够清楚。所以我将解释2种方法
带有供应商和 .env 文件(不推荐) - 解压缩主 zip 文件并上传您的 public_html 文件夹(上传 供应商文件夹)
给 storage/ 和 bootstrap/ 文件夹 777 递归权限
在phpmyadmin中创建数据库并导入.sql文件
在 .env 文件中设置数据库
现在通常对于所有共享主机,您都将使用 SSH,您可以联系主机提供商以获取其详细信息。
一旦你获得访问权限,使用命令
php artisan cache:clear
php artisan config:clear
php artisan config:cache
文件本身可以在 bootstrap/cache/config.php 中找到。
请注意,编译的配置文件的位置最近发生了变化。您的也可能在 vendor/config.php 或 storage/framework/config.php 中。全新安装或运行 composer update 文件应该在 bootstrap/cache 中。
现在直接来自 GIT 或其他无供应商的来源(推荐)
确保复制所有项目文件,包括隐藏文件 (.env)。
如果您使用 GIT,请使用 GIT clone 克隆项目。
检查您在 php.ini 中是否拥有所有必要的 PHP 扩展,如 Laravel 要求中一样。另外,请注意您的 PHP 版本!
安装作曲家https://getcomposer.org/doc/00-intro.md
复制后,转到您的目标文件夹并运行 composer install。
运行 php artisan key:generate from the command line.
然后运行
php 工匠缓存:清除
php 工匠配置:清除
php 工匠配置:缓存
http://php.net/manual/en/install.windows.commandline.php
确保您的网络服务器正在为项目/公共文件夹中的页面提供服务。
即使在完成这些步骤后,如果 Laravel 仍然显示错误,请检查 your_project/storage/logs/laravel.log
【讨论】:
以上是关于Laravel 在共享主机上给出 500 内部错误的主要内容,如果未能解决你的问题,请参考以下文章