laravel 10+ 要求 php ≥ 8.1 并启用 mbstring、openssl、pdo、tokenizer、xml、ctype、json 扩展,需检查 xampp 中 php 版本及扩展,修改 php.ini 启用缺失模块并重启 apache;项目应置于 htdocs 子目录,配置虚拟主机指向 public 目录,并设置 hosts 解析;还需赋予 storage 和 bootstrap/cache 写权限,运行 php artisan key:generate 生成 app_key。

确认 XAMPP 的 PHP 和 Apache 版本是否满足 Laravel 要求
Laravel 10+ 要求 PHP ≥ 8.1,且需启用 mbstring、openssl、pdo、tokenizer、xml、ctype、json 这些扩展。XAMPP 默认带的 PHP 版本容易过旧(比如 XAMPP 8.2 自带 PHP 8.2.12,可用;但 XAMPP 7.4 自带 PHP 7.4,已不支持 Laravel 10)。
验证方法:启动 XAMPP 控制面板 → 点击 Shell → 输入:
php -v和
php -m | grep -E "mbstring|openssl|pdo"。若缺失任一模块,打开
php.ini(路径通常是 C:\xampp\php\php.ini),取消对应行前的分号,例如:;extension=mbstring→ 改为
extension=mbstring。改完重启 Apache。
用 Composer 安装 Laravel 项目到 htdocs 目录下
别把 Laravel 项目直接丢进 C:\xampp\htdocs 根目录——Laravel 的 public 才是 Web 入口,根目录含敏感文件(如 .env、app/),暴露会出安全问题。
正确做法:
- 在
C:\xampp\htdocs下新建项目文件夹,例如myapp - 命令行进入该目录:
cd C:\xampp\htdocs\myapp
- 运行:
composer create-project laravel/laravel . --no-dev
(--no-dev可选,减少本地开发包) - 安装完成后,
C:\xampp\htdocs\myapp\public就是实际 Web 根路径
配置 Apache 虚拟主机指向 public 目录
直接访问 http://localhost/myapp/public 虽然能跑,但 URL 带 /public 不专业,也影响 Laravel 的 URL 生成(如 route()、asset())。必须用虚拟主机把域名根映射到 public 子目录。
操作步骤:
- 编辑
C:\xampp\apache\conf\extra\httpd-vhosts.conf,末尾追加:<virtualhost><br> DocumentRoot "C:/xampp/htdocs/myapp/public"<br> ServerName myapp.test<br><directory><br> Options Indexes FollowSymLinks<br> AllowOverride All<br> Require all granted<br></directory><br></virtualhost>
- 编辑
C:\Windows\System32\drivers\etc\hosts,添加一行:127.0.0.1 myapp.test
- 重启 Apache。之后访问
http://myapp.test即可正常加载
注意:AllowOverride All 是必须的,否则 Laravel 的 .htaccess 无法生效,导致路由 404。
解决常见报错:‘The stream or file “…” could not be opened’ 或 ‘No application encryption key has been specified’
这类错误基本都源于权限或初始化缺失,不是 Apache 配置问题。
-
The stream or file ".../storage/logs/laravel.log" could not be opened:XAMPP 的 Apache 进程(通常以SYSTEM或当前 Windows 用户身份运行)没权限写入storage和bootstrap/cache。右键这两个文件夹 → 属性 → 安全 → 编辑 → 添加当前用户(或IIS_IUSRS)→ 勾选“完全控制”→ 应用 -
No application encryption key has been specified:说明.env中缺APP_KEY。在项目根目录执行:php artisan key:generate
。确保.env文件存在且未被重命名为.env.example - 如果提示
artisan is not recognized,说明没在项目根目录执行,或 PHP 未加入系统 PATH —— 此时用完整路径:C:\xampp\php\php.exe artisan key:generate
Windows 下 storage 权限问题比 Linux 更隐蔽,经常改了文件夹权限却忘了子文件夹继承,建议直接对整个 storage 右键 → 属性 → 安全 → 高级 → 勾选“替换子容器及对象的所有者”再应用。










