【问题标题】:Laravel giving 500 internal error on Shared hostingLaravel 在共享主机上给出 500 内部错误
【发布时间】:2019-09-20 13:37:16
【问题描述】:

我有一个 laravel 应用程序在我的本地机器上运行良好。我刚刚将它转移到我的服务器(共享主机),并将所有内容放在 public_html 的公用文件夹中,并将其他所有内容放在 public_html 上方的一个步骤中。现在的问题是它在每条路线上显示 500 内部错误。我已将 .htaccess 代码更改为文档中的给定代码,存储和引导的文件夹权限设置为 777。

错误日志中没有任何内容,laravel 日志文件中也没有任何内容。当我安装新的 laravel 安装时,它也可以在服务器上运行。尝试用我的项目更新代码,但仍然出现 500 个内部错误。

【问题讨论】:

  • 请检查您的存储日志文件。
  • 尝试更改应用程序的公共路径。检查你的 server.php 文件

标签: php laravel server


【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-07
      • 2021-10-18
      • 2019-12-08
      • 1970-01-01
      • 2021-01-11
      • 1970-01-01
      • 2018-05-26
      • 2016-04-10
      相关资源
      最近更新 更多