plesk部署laravel 10需手动配置:1.网站根目录改为/httpdocs/public;2.在“额外nginx指令”中添加三行fastcgi_param(含$realpath_root);3.追加location / { try_files $uri $uri/ /index.php?$query_string; };4.执行key:generate、清缓存、设权限并校验app_url。

在 Plesk 面板中部署 Laravel 10,关键不是“点几下就能跑”,而是绕过 Plesk 默认的 PHP 应用托管逻辑,手动接管入口路径、权限和运行时配置。Plesk 不识别 Laravel 框架结构,也不会自动把 root 指向 public/,更不会注入 Laravel 所需的 SCRIPT_FILENAME 和 try_files 规则。直接上传或解压整个项目到域名根目录,大概率出现 404、空白页、“No input file specified” 或路由全失效。
必须改三项:网站根目录、PHP 处理方式、伪静态规则
一、把网站根目录指向 public 子目录
Plesk 默认将域名根目录设为项目根(如 `/var/www/vhosts/example.com/httpdocs`),但 Laravel 10 入口是 `public/index.php`。若不改,所有请求都试图加载 `.env`、`artisan` 或 `app/` 下的 PHP 文件,既不安全又必然失败。- 登录 Plesk → 进入对应域名 → 点击「网站与域名」→ 「网站设置」
- 找到「文档根目录」(Document Root)字段
- 把原路径(如
/var/www/vhosts/example.com/httpdocs)改为/var/www/vhosts/example.com/httpdocs/public
(注意:不是加/public后缀,而是完整替换为带/public的路径) - 勾选「使用此目录作为子域名的文档根目录」(如有子域名需同步)
- 点击「确定」保存
验证:访问 http://yourdomain.com,应看到 Laravel 欢迎页;若提示 404 或下载 index.php 源码,说明 root 仍没切对。
二、禁用 Plesk 的「PHP 支持」自动处理,启用自定义 fastcgi_param
Plesk 默认用 `fastcgi_params`,但缺 Laravel 10 必需的 `$realpath_root` 衍生参数,导致 `$_SERVER['SCRIPT_FILENAME']` 为空,`RouteServiceProvider` 初始化失败,页面白屏。- 进入该域名 → 「Apache & nginx 设置」
- 在「额外 nginx 指令」(Additional nginx directives)文本框中,粘贴以下三行(不可少,不可改顺序):
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param PATH_INFO $realpath_info; fastcgi_param REQUEST_URI $request_uri;
- 同时,在「额外 Apache 指令」里留空(Laravel 10 推荐 Nginx,Apache 下需额外重写且易出错,不建议混用)
⚠️ 注意:不要勾选「使用 Apache 处理 PHP 脚本」——Nginx + PHP-FPM 是 Plesk 下 Laravel 最稳组合。
三、手写 location / 的 try_files 伪静态规则
Plesk 的「重写规则」界面不支持 Laravel 所需的 `try_files $uri $uri/ /index.php?$query_string`,且它内置的 Laravel 模板仅适配旧版(≤5.x),对 L10 完全无效。抄 `.htaccess` 或宝塔规则也会因 Nginx 版本差异(Plesk 多为 1.20+)引发 `PATH_INFO` 解析异常。- 仍在「Apache & nginx 设置」页
- 找到「额外 nginx 指令」,在刚才那三行下方追加:
location / { try_files $uri $uri/ /index.php?$query_string; } - 确保这段位于
location ~ \.php$ { ... }块之前(Nginx 匹配优先级敏感) - 删除任何形如
rewrite ^/(.*)$ /index.php?/$1 last;或if (!-e $request_filename)的旧规则(它们与try_files冲突)
保存后,Plesk 会自动重载 nginx 配置,无需手动重启服务。
四、部署后必做的初始化动作
- SSH 登录服务器,进入项目根目录(不是 public 目录,是 `/httpdocs` 那一层):cd /var/www/vhosts/example.com/httpdocs- 执行:
php artisan key:generate php artisan config:clear php artisan cache:clear chmod -R 755 storage bootstrap/cache- 检查 `.env` 中 `APP_URL` 是否与你实际访问的域名完全一致(含 `https://` 或 `http://`,不能多斜杠、不能少 www) - 若用数据库,确认 `DB_HOST=127.0.0.1`(Plesk MySQL 默认绑定本地 IP,不用 `localhost`)
做完这四步,Laravel 10 就能在 Plesk 上稳定运行了。它不依赖 Plesk 的“一键部署”幻觉,而是用最小必要干预,把控制权拿回来。











