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

时间:2020-04-19 19:30:14

标签: php laravel cpanel shared-hosting

我正在使用cPanel上传我的网站的简单订阅页面。我将文件上传到 public_html ,将文件从 public 文件夹中移出并修改了 index.php ,使其指向应用程序。我曾经为该应用程序编写代码的PHP版本是 7.3 ,但是我必须在主机中选择7.2版本,因为这是最新版本。

当我加载网站时,出现此错误“此页面无法正常运行,bazzaar.net当前无法处理此请求。 HTTP错误500“

当我从index.php文件中删除所有内容并添加页面加载的简单回显时。

我真的需要这个。错误日志如下:

堆栈跟踪:

#0 /home3/bazzaar/public_html/vendor/symfony/http-foundation/Response.php(198): Symfony\Component\HttpFoundation\Response->setStatusCode(500)
#1 /home3/bazzaar/public_html/vendor/symfony/http-foundation/Response.php(214): Symfony\Component\HttpFoundation\Response->__construct('<!doctype html>...', 500, Array)
#2 /home3/bazzaar/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(328): Symfony\Component\HttpFoundation\Response::create('<!doctype html>...', 500, Array)
#3 /home3/bazzaar/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(305): Illuminate\Foundation\Exceptions\Handler->convertExceptionToResponse(Object(Symfony\Component\Er in /home3/bazzaar/public_html/vendor/symfony/http-foundation/Response.php on line 450

我的 .htacess文件

suPHP_ConfigPath / opt / php72 / lib

选项-MultiViews-索引

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]

#默认使用PHP72

9 个答案:

答案 0 :(得分:2)

假设cpanel没有其他网站,而您的laravel项目应该是默认项目。

  1. 压缩整个Laravel项目并将数据库导出到sql
  2. 登录cPanel并导航到“文件管理器”
  3. 确保您位于根文件夹中,然后单击“上传”
  4. 选择您的zip文件,然后等待上传完成
  5. 解压缩上传的文件
  6. 将公共内容移动到public_html文件夹
  7. 返回Cpanel并导航至数据库
  8. 创建数据库并添加(如果不存在则创建)数据库用户
  9. 单击您的新数据库,然后单击“导入”
  10. 选择导出的SQL文件
  11. 尝试使用域名url访问您的laravel网站

该网站可能会提供更多详细信息https://dev.to/asapabedi/deploying-laravel-5-applications-on-shared-hosting-without-the-use-of-ssh--16a6

答案 1 :(得分:2)

截至2020年5月的LARAVEL 7.0

这对我有用:

  1. 将cpanel的php版本更新为laravel版本的要求,例如laravel 7.0需要https://laravel.com/docs/7.x/installation

  2. 检查是否已安装所有必需的扩展程序

  3. 然后,如果您在.htacess方面遇到问题,建议您通过以下方式进行测试:。
    创建一个简单的index.html
    只需添加

    Hello World

    然后将所有文件压缩到public_html(包括.htaccess)中,并上传index.html
    刷新目标网址,例如domain.com
    当它起作用时,您就可以进行下一步了
    (如果它不尝试调试/找出原因)

  4. 通过...上传数据库(假设其已导出)
    转到MySQL数据库
    使用要添加的数据库的确切名称创建数据库
    然后创建一个MySQL用户并将其所有特权授予数据库
    转到cpanel中的phpmyadmin并导入导出的sql文件

  5. 压缩您正在工作的laravel项目并将其上传到主文件夹

  6. 在cpanel提取物中并...
    请注意:
    将所有文件夹放在家里
    选择公共内容,包括对public_html

  7. 的.htaccess

文件夹和文件结构应与您的laravel项目相同 您的计算机(现在公共除外,现在是public_html)

警告:请勿触摸index.php或server.php

  1. 使隐藏的文件在cpanel中可见,然后最终通过...编辑.env文件。
    仅编辑数据库用户名和密码(我希望数据库名称相同)
    另外,您还希望将APP_DEBUG保留为true进行测试(您必须进行测试)
    一切正常后,将其更改为false

  2. 如果您没有数据库,那么什么都在等待刷新
    尽管即使现在有了数据库,时间也会刷新

答案 2 :(得分:2)

请按照以下步骤操作:

  1. 检查根域或子域上的.htaccess文件。
  2. 如果将公共文件移至根目录=>将index.php内容/../更改为/

例如

需要 DIR 。'/ .. / vendor / autoload.php';

TO

需要 DIR 。'/ vendor / autoload.php';

AND

$ app = require_once DIR 。'/ .. / bootstrap / app.php';

TO

$ app = require_once DIR 。'/ bootstrap / app.php';

  1. 检查php版本(在laravel 6+上,我使用php7.4并已解决问题)
  2. 检查.env文件

答案 3 :(得分:1)

您不需要对 Laravel 的结构进行更改。只需复制下面的 htaccess 代码并粘贴到 Laravel 项目根目录下的 .htaccess 文件中即可。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^$ public/index.php [L]
    RewriteRule ^((?!public/).*)$ public/$1 [L,NC]
</IfModule>

答案 4 :(得分:0)

问题似乎出在PHP版本上。 Laravel 6需要PHP> = 7.2.5,并且Hostgator的最新版本仅为7.1。所以我不得不联系客户支持并要求最新的PHP版本。

此外,laravel必需的 mbStrings 也已关闭。

答案 5 :(得分:0)

  1. 在主机上创建一个名为 public_html / myapp 的新目录。

  2. 在Laravel项目中,您有一个公共目录。将那个 public 目录的内容复制到您在主机上创建的 public_html / myapp 目录中。

  3. public_html 文件夹位于同一级别(不在其中!),在主机上创建一个名为 myapp-laravel 的新目录。

  4. public 文件夹外,复制每个文件夹和文件(例如 app 文件夹, .env 文件,... )从Laravel项目复制到主机上的 myapp-laravel 文件夹中。

  5. 像这样编辑 public_html / myapp / index.php 文件:

  • 更改要求
    __ DIR__.'/../vendor/autoload.php';
    以要求
    __ DIR__.'/../../myapp-laravel/vendor/autoload.php';
  • require_once __ DIR__.'/../bootstrap/app.php';
    更改为
    require_once __ DIR__.'/../../myapp-laravel/bootstrap/app.php';

找到文章here

答案 6 :(得分:0)

  1. 压缩并上传您的项目。
  2. 解压
  3. 将域的根文件夹配置为“public”,即 Laravel 解压文件夹中的 public 文件夹。

答案 7 :(得分:0)

首先,将项目上传到您的 cpanel 的文件夹中。就我而言,它被命名为 project
然后,上传 public_html 中的公共文件夹,并根据您上传项目的文件夹更改 index.php 文件。

答案 8 :(得分:0)

  1. 在主机上创建一个子域并将其映射到文件夹,例如:“abc”
  2. 在文件夹“abc”中上传 Laravel 项目 zip(带有供应商文件夹)然后解压
  3. 将子域映射到 laravel 的公共文件夹,即“abc/public”。
  4. 创建一个数据库和用户并将该用户分配给具有所有权限的数据库
  5. 在上面创建的数据库中导入数据库转储。
  6. 在 laravel .env 文件中添加数据库用户/密码。

注意:如果您遇到任何由于缓存删除目录 bootstrap/cache 中的文件 config.php。