必须在本地完整安装 Laravel 并手动调整结构:将 vendor 等文件移入 local 文件夹,public 内容提至根目录,修改 index.php 路径为 local/,配置 .env 并删除缓存与视图编译文件。

在不支持 SSH 和命令行的虚拟主机(如国内常见的万网、新网、景安等共享空间)上部署 Laravel,必须绕过 composer install、php artisan 命令和自动缓存生成等依赖终端的操作,全程靠手动文件搬运、路径重写与配置硬改完成。
准备本地可运行的完整 Laravel 包
这一步不能跳——虚拟主机不提供 composer 环境,所有 vendor 依赖必须在本地完整安装好再上传。
在本地 Windows/macOS/Linux 环境中,用 PHP 7.4+(【Laravel 5.7–9.x 至少需 PHP 7.3,但虚拟主机普遍只支持 7.4 或 8.0,请务必确认你空间后台显示的 PHP 版本】)执行:
composer create-project --prefer-dist laravel/laravel=5.7.29 myapp --no-dev
执行完后不要动它。进入 myapp 目录,确认 vendor/ 文件夹已存在且体积超过 20MB;若为空或报错,说明本地 composer 源被墙或 PHP 扩展缺失(需开启 openssl、mbstring、xml、zip、curl)。
这一步操作起来很简单,直接把文件拖进去就行。
调整项目结构:把 public 提升为网站根目录
虚拟主机的网站入口固定为 wwwroot / htdocs / public_html,无法像 VPS 那样设置 DocumentRoot 到 public 子目录。必须把 Laravel 的 public 内容“翻上来”。
将本地 myapp 目录下除 public 外的所有文件和文件夹(app、bootstrap、config、database、resources、routes、storage、tests、vendor 等)整体剪切 → 新建一个名为 local 的文件夹 → 粘贴进去。
接着,把 public 文件夹里的全部内容(index.php、css/、js/、images/ 等)复制到 myapp 同级的空目录(即未来要上传到虚拟主机根目录的那个位置)。
最后,把 local 文件夹整个上传到虚拟主机根目录的同级位置(例如:/wwwroot/local/)。
重写 index.php 入口文件
public 下的 index.php 默认从上两级找 bootstrap/autoload.php,现在结构变了,路径必须手动修正。
打开已上传到虚拟主机根目录的 index.php,找到这两行:
require __DIR__.'/../bootstrap/autoload.php';
require __DIR__.'/../bootstrap/app.php';
把其中的 ../ 全部替换成 local/,改后变成:
require __DIR__.'/local/bootstrap/autoload.php';
require __DIR__.'/local/bootstrap/app.php';
注意:如果使用的是 Laravel 5.5+,autoload.php 已移除,只需改 app.php 这一行;Laravel 5.7 中仍保留 autoload.php,必须两处都改。漏改任一,页面会直接报错 “No such file or directory”。
配置 .env 文件并禁用调试模式
在虚拟主机根目录下创建 .env 文件(不是 .env.example),内容如下(按你空间提供的 MySQL 信息填写):
APP_NAME=Laravel
APP_ENV=production
APP_KEY=base64:your_32_bytes_base64_key_here(见下一步)
APP_DEBUG=false
APP_URL=https://yourdomain.com
LOG_CHANNEL=errorlog
DB_CONNECTION=mysql
DB_HOST=127.0.0.1(或空间后台写的数据库地址)
DB_PORT=3306
DB_DATABASE=your_db_name
DB_USERNAME=your_db_user
DB_PASSWORD=your_db_pass
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
APP_KEY 必须是合法 base64 字符串,长度为 44 字符。可在本地 Laravel 项目中运行 php artisan key:generate → 复制结果;或用在线工具生成符合格式的字符串(如 https://laravelkey.net),【严禁留空或填 abc123 这类无效值,否则 session 和加密功能彻底失效】。
清理缓存与视图编译文件
第一步:删除 /wwwroot/local/bootstrap/cache/ 下所有文件(packages.php、services.php、config.php 等)——这些是 artisan config:cache 生成的,虚拟主机无法执行该命令,残留会导致配置不生效。
第二步:删除 /wwwroot/local/storage/framework/views/ 下所有 *.php 编译文件——Blade 模板首次访问时会自动生成,但若之前在本地开发环境生成过,上传后可能因路径错误导致白屏或 500 错误。
第三步:确保 /wwwroot/local/storage/ 下的 framework/sessions、framework/cache、framework/logs 三个子目录存在且权限为 755(部分虚拟主机需在控制面板里手动设为可写,或上传一个空的 .htaccess 文件防止目录被列)。


















