如何在子域上上传 laravel 项目?

Posted

技术标签:

【中文标题】如何在子域上上传 laravel 项目?【英文标题】:How to upload laravel project on subdomain? 【发布时间】:2017-02-14 15:55:30 【问题描述】:

我想在子域中托管一个 laravel 项目。首先,我创建一个子域名注册。

在 publicm_html/registraion 中,我上传了项目文件。 但是当我在 url 上看到项目时,我只看到文件而不是我存储的项目。

上传laravel项目有什么问题? 谁能帮我找出来?

【问题讨论】:

将 index.php 文件从 publc 文件夹移动到您的根项目文件夹。并更改 require DIR.'/../bootstrap/autoload.php';要求 DIR.'/bootstrap/autoload.php'; 移动 index.php 不是解决这个问题的方法。根文件夹上可能还有其他站点正在运行。 我的意思是laravel文件夹的根文件夹。@Samundra 我认为你把事情复杂化了。只需将子域根文件夹指向project-root/public/ 就足够了。我们不需要更新DIR.'/../bootstrap/autoload.php。这是 Laravel 负责处理的事情,我们无需担心。 我按照您的步骤操作,但无法解决@PradyutManna 【参考方案1】:

假设您使用 cPanel 创建子域。以下是为 laravel-project 设置子域所需的一般步骤。

    创建您的子域 将你的 laravel 项目上传到子域主目录。 上传所有文件后。更新您的子域文档根目录以指向 public_html/registration/public/ 文件夹,您可以通过 cPanel see 内的子域管理器执行此操作。

执行 1-3 步后,您应该会看到您的 laravel 项目。但是,您还需要在 laravel 的 bootstrapstorage 文件夹上设置适当的文件权限才能启动并运行它。

让我们知道这是否对您有帮助。

【讨论】:

查看我的子域名是registraion。所以我将文档根指向 ..`/public_html/registration/public` 但是当我尝试访问 url registraion.abc.com 时,我看到了以下错误:Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '' or '$' in /home/esbbd/public_html/registration/public/index.php on line 50 内部控制面板。在domains 下单击subdomains。在新打开的页面中,您将在下方看到Modify a subdomain。单击您的子域的Document Root 链接旁边的pencil 图标并将其更改为“/public_html/registration/public. Simply enter public_html/registration/public”,然后单击Change。重试访问您的子域。它现在必须工作。 你说这是一个 laravel 项目,我们通常不会修改它的index.php。你服务器的laravel版本,php版本是多少? 我收到错误“未指定输入文件”。任何想法?该应用在访问 sub/public 时运行正常,但现在无法运行 此页面不工作 //subdomainURL// 当前无法处理此请求。 HTTP 错误 500【参考方案2】:

按照@Samundra 所说的去做。如果您有困惑,这是您需要将public_html/registration/public 放入您的 cPanel -> 子域

的地方

【讨论】:

查看我的子域名是registraion。所以我将文档根指向 ..`/public_html/registration/public` 但是当我尝试访问 url registraion.abc.com 时,我看到了以下错误:Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '' or '$' in /home/esbbd/public_html/registration/public/index.php on line 50 然后是版本控制和禁用模块问题。您使用的是什么版本的 PHP?这样我就可以告诉你你需要什么配置。 我正在使用 PHP7? 知道了..我没有更新PHP版本...谢谢您的帮助。【参考方案3】:

就我而言,我尝试了所有可用的解决方案。但是当我检查日志时,我发现了一个错误:

 production.ERROR: No application encryption key has been specified. "exception":"[object] (RuntimeException(code: 0): No application encryption key has been specified. at /home/******/public_html/**subdomain name*/vendor/laravel/framework/src/Illuminate/Encryption/EncryptionServiceProvider.php:44)
[stacktrace]

然后我在我的项目结构中搜索 .env 文件。(检查隐藏文件列表)。在我的项目中,默认情况下 .env 不存在,只有 .env.example 文件存在。

所以我创建了一个 .env 并添加了

APP_NAME=Laravel
APP_ENV=local
APP_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=xxxxxxxxxxxxxxxxxxx
DB_USERNAME=xxxxxxxxxxxxxxxxxxx
DB_PASSWORD=xxxxxxxxxxxxxxxxxxx

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="$PUSHER_APP_KEY"
MIX_PUSHER_APP_CLUSTER="$PUSHER_APP_CLUSTER"

我已经生成了一个 APP_KEY。为此,我使用了

php artisan key:generate --show

然后我将密钥保存在 .env 中。然后它完成了。希望它可以帮助某人

【讨论】:

【参考方案4】:

我认为 laravel 项目可以安装在域或子域中。

上传你的 laravel 项目时需要注意的是,确保你的子域目录中没有任何文件(隐藏)。全部删除并上传你的 laravel 项目文件或压缩包

【讨论】:

以上是关于如何在子域上上传 laravel 项目?的主要内容,如果未能解决你的问题,请参考以下文章

如何在子域共享主机上安装 laravel

子域上的 Laravel 存储链接

如何在 CodeIgniter 中为 Laravel 中的第一个项目定义子域路由?

如何在 Cpanel 的子域 lumen/laravel 上安装免费 SSL?

如何在 AWS 上更新 laravel 项目

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