繁体   English   中英

Laravel 在共享主机上给出 500 内部错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM