[英]Laravel giving 500 internal error on Shared hosting
我有一个 Laravel 应用程序在我的本地机器上运行良好。 我刚刚将它转移到我的服务器(共享主机)并将所有内容放在 public_html 中的公共文件夹中,其他所有内容都放在 public_html 之上的一个步骤中。 现在的问题是它在每条路线上显示 500 个内部错误。 我已将 .htaccess 代码更改为文档上的给定代码,存储和引导程序的文件夹权限设置为 777。
错误日志中没有任何内容,laravel 日志文件中也没有。 当我安装新的 laravel 安装时,它也可以在服务器上运行。 尝试使用我的项目更新代码,但仍然出现 500 内部错误。
如果您使用的是 IONOS(或 1and1,也许也适用于其他...),. .htaccess
文件应该与 laravel 公共目录中的默认文件不同。
将其内容替换为:
RewriteBase /
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
对于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>
该错误可能是由于.env文件的配置。由于您的问题不够清楚。 所以我会解释两种方法
使用供应商和 .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 时,该文件应位于引导程序/缓存中。
现在直接来自 GIT 或其他来源,无需供应商(推荐)
确保复制所有项目文件,包括隐藏文件 (.env)。
如果您使用的是 GIT,请使用 GIT clone 来克隆项目。
检查您在 php.ini 中是否拥有所有必要的 PHP 扩展,如 Laravel 要求中所述。 另外,请注意您的 PHP 版本!
安装 composer https://getcomposer.org/doc/00-intro.md
复制后,转到目标文件夹并运行 composer install 。
从命令行运行 php artisan key:generate 。
然后运行
php工匠缓存:清除
php工匠配置:清除
php工匠配置:缓存
http://php.net/manual/en/install.windows.commandline.php
确保您的网络服务器正在为来自项目/公共文件夹的页面提供服务。
即使在完成这些步骤后,如果 Laravel 仍然显示错误,请检查 your_project/storage/logs/laravel.log
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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.