Cpanel 共享主机中的 Laravel 5.5 错误 500

Posted

技术标签:

【中文标题】Cpanel 共享主机中的 Laravel 5.5 错误 500【英文标题】:Laravel 5.5 Error 500 in Cpanel Shared Hosting 【发布时间】:2018-05-26 20:45:15 【问题描述】:

我已经将我的 laravel 项目文件夹上传到 cpanel 托管。我没有VPS。我在 laracast 和 stackoveflow 中阅读了许多示例,但仍然收到此 500 内部错误。这是我的设置。

我在我的 laravel 项目中分离了公用文件夹,并将另一个放在我主机的根目录中,如下所示。

|-- my_other_folder_project/
|-- [some other folders...]
|-- public_html/ 
|   |-- [some other folders...]
|   |-- my_public_project/

并将 index.php 设置更改为:

来自

require __DIR__.'/../vendor/autoload.php';

require __DIR__.'/../../my_other_folder_project/vendor/autoload.php';

$app = require_once __DIR__.'/../bootstrap/app.php';

$app = require_once __DIR__.'/../../my_other_folder_project/bootstrap/app.php';

我已经为这样的公用文件夹创建了 .htaccess 文件:

DirectoryIndex index.php

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %REQUEST_FILENAME !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %REQUEST_FILENAME !-d
    RewriteCond %REQUEST_FILENAME !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %HTTP:Authorization .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%HTTP:Authorization]
</IfModule>

我的 PHP 是 7.1,我已经检查了其他要求,如 OpenSSL、PDO、Mbstring、Tokenizer 已经安装。

但仍然收到此 500 内部服务器错误,我为此搜索了许多参考,但指出了我已经执行的步骤。

【问题讨论】:

您是否检查过任何日志以了解 500 错误实际上是由什么引起的? 这在 error_log 中:[13-Dec-2017 03:20:30 UTC] PHP Parse error: syntax error, unexpected '?'在 /home/myuser/myfolder/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php 第 233 行 这意味着您没有安装 PHP 7.1。它破坏了 PHP 7.0 中引入的空值合并运算符 (??)。 可能同样的问题,你可以在这里看到。 ***.com/questions/45992685/… 【参考方案1】:

第一次,你可以检查你的php信息

<?php
phpinfo();
?>

你可以在那里搜索“mbstring”...

如果mbstring仍未安装,您可以要求提供者安装。

如果已经安装并且仍然出现错误 500,最好你必须在 phpinfo() 中检查你的 php 版本。并使用 php artisan 命令清除缓存。当你有 shell 权限时,你可以尝试使用命令“php -v”检查你的 php 版本,并查看默认的 php 与哪个 php。

【讨论】:

啊,是的,我的phpinfo没有,我先安装。谢谢!【参考方案2】:

服务器的 PHP 版本低于 Laravel 的最低版本要求可能会出现错误 500。

根据我的经验,当我使用 Laravel 5.6 时,我的 PHP 版本仍为 7.0,而实际上它至少需要 PHP 7.1.3,问题就出现了。在 cPanel 的 PHP Selector 中更改我的 PHP 版本解决了这个问题。

确保您服务器的 PHP 版本等于或高于您的 Laravel 版本所需的版本。

【讨论】:

【参考方案3】:

只是为了说明我在共享主机上上传时遇到的一些问题以及我如何保存它。 错误 500 出现在我的页面上。

经过多次调查, 我发现公共文件夹和主应用程序中的隐藏文件都没有包含在我的上传中。

因此,只需确保在存档/上传之前显示隐藏文件

如果未启用显示隐藏文件,它将不会被上传/存档。

缺少这些文件也会产生 500 错误。

我使用 laravel 5.5.*

【讨论】:

【参考方案4】:

以上解决方案都不适合我。所以尝试了:

php composer.phar install

上传(第一次)我的项目在我的本地机器上构建后,在我的共享主机上运行。

【讨论】:

【参考方案5】:

确保您已运行 composer install 并且应该有一个 .env 文件

【讨论】:

【参考方案6】:

还要确保文件夹和文件具有正确的权限。以下是如何设置正确的权限。

find /opt/lampp/htdocs -type d -exec chmod 755  \;
find /opt/lampp/htdocs -type f -exec chmod 644  \;

https://***.com/a/11512211/8621306

【讨论】:

以上是关于Cpanel 共享主机中的 Laravel 5.5 错误 500的主要内容,如果未能解决你的问题,请参考以下文章

Cpanel 共享主机上的 Laravel

如何在 cPanel 共享主机上上传 laravel 项目?

_LIR__与Laravel 5.5和OVH共享主机不一致

Laravel 项目临时访问需要 cPanel 名称

终端命令删除多个文件-CPanel,共享主机感染病毒

共享主机上的 Django 应用程序依赖项(Cpanel)