直接迁移Laravel项目需环境对齐、配置隔离、权限到位、路由通顺:PHP必须≥8.2且启用mbstring/openssl/pdo/xml/ctype/json/zip/bcmath/fileinfo;用git clone部署,执行composer install --no-dev、key:generate、migrate --force;.env按生产环境配置;Nginx根目录指向public并配全try_files与SCRIPT_FILENAME;storage和bootstrap/cache需chown www-data并chmod 755。

确保 PHP 版本和扩展一致
本地用 PHP 8.2,服务器也得是 8.2(不是 8.1 或 8.3),且必须启用这些扩展:mbstring、openssl、pdo、xml、ctype、json、zip、bcmath、fileinfo。Laravel 12 要求 PHP ≥ 8.2,少一个扩展就可能报错退出。
Linux 上推荐用 apt 明确安装:
sudo apt install php8.2-cli php8.2-mbstring php8.2-xml php8.2-zip php8.2-bcmath php8.2-fileinfo- 装完运行
php -v和php -m | grep mbstring验证
用 Git 部署代码,别手动传压缩包
在服务器目标目录(如 /var/www/myapp)执行:
-
git clone https://your-git-repo-url.git .(注意末尾的点) -
composer install --no-dev --optimize-autoloader(跳过开发依赖,提升性能) -
php artisan key:generate(生成唯一密钥)
如果没用 Git,至少用 SFTP 把整个项目上传,但务必排除 vendor/ 和 .env —— 这两个要现场生成。
正确配置 .env 和数据库
.env 绝对不提交到 Git。部署时走标准流程:
cp .env.example .env- 编辑
.env,改掉这些关键项:APP_ENV=productionAPP_DEBUG=falseAPP_URL=https://yourdomain.comDB_HOST=127.0.0.1(或远程地址)DB_DATABASE=your_db_nameDB_USERNAME=your_userDB_PASSWORD=your_pass - 数据库迁移:
php artisan migrate --force(生产环境需加--force)
Nginx 必须配对 public 目录和重写规则
Web 根目录必须指向 public/,不是项目根目录。Nginx 配置里至少包含:
root /var/www/myapp/public;location / { try_files $uri $uri/ /index.php?$query_string; }location ~ \.php$ { fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; }
漏掉 $query_string 会导致带参数的 URL 丢参;漏掉 $realpath_root 会让 $_SERVER['SCRIPT_FILENAME'] 错位,常见 500 错误。
修复权限和软链接
Laravel 需要写入权限的目录只有两个:storage/ 和 bootstrap/cache/:
sudo chown -R www-data:www-data storage bootstrap/cachesudo chmod -R 755 storage bootstrap/cache
如果用了 php artisan storage:link,它会在 public/ 下建软链接指向 storage/app/public/。若手动上传未运行该命令,需补上:
-
php artisan storage:link(在项目根目录执行) - 或手动创建:
ln -sf /var/www/myapp/storage/app/public /var/www/myapp/public/storage


















