为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
开心每一天1111 2022-12-30 17:36:51
我正在使用 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 -IndexesRewriteEngine On# Handle Authorization HeaderRewriteCond %{HTTP:Authorization} .RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]# Redirect Trailing Slashes If Not A Folder...RewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_URI} (.+)/$RewriteRule ^ %1 [L,R=301]# Send Requests To Front Controller...RewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^ index.php [L]# 默认使用 PHP72
查看完整描述

7 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

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

  1. 压缩整个 Laravel 项目并将数据库导出到 sql

  2. 登录到 cPanel 并导航到文件管理器

  3. 确保您位于根文件夹中,然后单击“上传”

  4. 选择您的 zip 文件并等待上传完成

  5. 解压上传的文件

  6. 将 public 的内容移动到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


查看完整回答
反对 回复 2022-12-30
?
白板的微信

TA贡献1883条经验 获得超3个赞

你不需要改变 Laravel 的结构。只需复制下面的 htaccess 代码并粘贴到 laravel 项目根目录下的 .htaccess 文件中。


<IfModule mod_rewrite.c>

    RewriteEngine On

    RewriteBase /

    RewriteRule ^$ public/index.php [L]

    RewriteRule ^((?!public/).*)$ public/$1 [L,NC]

</IfModule>


查看完整回答
反对 回复 2022-12-30
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

如果您使用的是 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

我从这个视频中得到了这个答案,所以请对他说声谢谢 https://www.youtube.com/watch?v=6Qbd9HTh7AE(谢谢)


查看完整回答
反对 回复 2022-12-30
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

按着这些次序:

  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 文件



查看完整回答
反对 回复 2022-12-30
?
慕的地10843

TA贡献1785条经验 获得超8个赞

这对我有用:

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

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

  3. 然后,如果您在使用 .htacess 时遇到问题,我建议您通过...
    创建一个简单的 index.html进行测试,
    只需添加一行

    你好世界

    然后将所有文件压缩到你的 public_html(包括 .htaccess)中并上传 index.html
    刷新目标 url 说 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. 如果你没有数据库,什么已经在等待刷新了
    即使有数据库现在也需要刷新


查看完整回答
反对 回复 2022-12-30
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

我为 Laravel 8 和 9 版本获得了一个有效的、不那么痛苦的系统。可以关注,希望对你有帮助:

  1. 公共文件夹中,您将获得总共 4 个文件。.htaccessfavicon.icoindex.phprobots.txt

  2. 只需将所有这些文件移动到应用程序的根目录,也就是说,在公共文件夹之外。

  3. 使用编辑器打开index.php文件并更改 2 行。更改此行:

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

到:

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

并更改此行:

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

到:

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

  2. 所以现在转到.env文件并添加这一行:

     ASSET_URL=public
  3. 所有任务都完成了!

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


查看完整回答
反对 回复 2022-12-30
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

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

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

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

  4. 除了public文件夹,将 Laravel 项目中的每个文件夹和文件(例如app文件夹、.env文件等)复制到主机上的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';

在此处查找文章。


查看完整回答
反对 回复 2022-12-30
  • 7 回答
  • 0 关注
  • 155 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信