如何在子域上上传 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 的 bootstrap
、storage
文件夹上设置适当的文件权限才能启动并运行它。
让我们知道这是否对您有帮助。
【讨论】:
查看我的子域名是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 项目?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 CodeIgniter 中为 Laravel 中的第一个项目定义子域路由?