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

Adr*_*ian 2 php shared-hosting cpanel laravel

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

当我加载我的网站时,我收到此错误“此页面无法正常工作 bazzaar.net 当前无法处理此请求。HTTP 错误 500”

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

我真的需要这方面的帮助。错误日志如下:

堆栈跟踪:

#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
Run Code Online (Sandbox Code Playgroud)

我的.htacess 文件

suPHP_ConfigPath /opt/php72/lib

选项 -MultiViews -Indexes

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]
Run Code Online (Sandbox Code Playgroud)

# 默认使用 PHP72

Soh*_*med 30

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

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

Run Code Online (Sandbox Code Playgroud)


are*_*n2k 15

我为 Laravel 8、9 和 10 版本提供了一个有效且轻松的系统。你可以关注一下,希望对你有帮助:

  1. 公用文件夹中,您将获得总共 4 个文件。.htaccessfavicon.icoindex.phprobots.txt
  2. 只需将所有这些文件移至应用程序的根目录,即公共文件夹之外。
  3. 使用编辑器打开index.php文件并更改2 行。更改这一行:
需要 __DIR__.'/../vendor/autoload.php';

到:

需要 __DIR__.'/vendor/autoload.php';

并更改此行:

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

到:

$app = require_once __DIR__.'/bootstrap/app.php';
  1. 如果您在应用程序中使用的公共文件夹中有图像,您将看到在整个应用程序中,您的图像没有显示。

  2. 现在转到.env文件并添加以下行:

    ASSET_URL=公共

  3. 在某些情况下,管理 URL 无法工作。如果您发现任何问题,可以像这样更改 ASSET_URL:

    ASSET_URL=https://yourwebsite.com/public

  4. 所有任务都完成了!

现在只需将您的应用程序上传到共享服务器即可正常工作。


Sac*_*ola 11

如果您使用 Apache 服务器,您可以执行以下简单步骤

第 1 步:只需将所有源代码上传到服务器上(确保数据库和 .env 设置良好)i) 制作 zip 并解压它 ii) 使用 git 部署代码或从存储库中克隆并安装所有依赖项

步骤2:在项目根目录下创建一个.htaccess文件,并将以下代码复制并粘贴到该文件中。

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ ^$1 [N]
RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
RewriteRule ^(.*)$ public/$1 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php
Run Code Online (Sandbox Code Playgroud)

  • 它对我有用,无需将 /public 复制到应用程序的根目录。但是,它不服务于公共资产(图像) (2认同)

小智 7

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

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

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


Z-X*_*-KH 5

截至 2020 年 5 月,LARAVEL 7.0

这对我有用:

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

  2. 检查是否安装了所有必需的扩展

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

    你好世界

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

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

  5. 压缩您正在运行的 Laravel 项目并将其上传到主文件夹

  6. 在 cpanel 中提取并...
    请注意:
    将所有文件夹放在主页中
    选择 public 的内容,包括 .htaccess 到 public_html

文件夹和文件结构应该与您计算机上的 Laravel 项目相同(除了 public 现在是 public_html)

警告:不要碰你的index.php或server.php

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

  2. 如果您没有数据库,那么什么已经在等待刷新了
    即使有数据库,现在也是时候刷新了


Asa*_*wla 5

按着这些次序:

  1. 检查根域或子域上的 .htaccess 文件。
  2. 如果将 public 文件移动到 root => 将 index.php 内容 /../ 更改为 /

例如

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

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

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

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

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