Mac环境下Laravel在XAMPP中报语法错误,php artisan serve运行正常
解决Laravel部署到XAMPP出现Parse Error的问题
这个报错我之前帮朋友排查过,核心原因很明确:你的XAMPP环境使用的PHP版本,低于当前Laravel项目要求的最低版本。
你看到的unexpected '?'是因为?是PHP 7.0才引入的「null合并运算符」,而XAMPP里的PHP版本大概率还停留在7.0以下;但php artisan serve用的是你Mac系统自带的(或者你手动配置的)符合版本要求的PHP,所以能正常运行。
下面是具体的解决步骤:
1. 先确认两个环境的PHP版本差异
- 打开终端,输入
php -v,这就是php artisan serve使用的PHP版本,记下来。 - 在XAMPP的
htdocs目录下新建一个info.php文件,内容写:
启动XAMPP的Apache,在浏览器访问<?php phpinfo(); ?>http://localhost/info.php,查看页面里的PHP版本,和终端里的版本对比,你会发现明显的版本差。
2. 升级XAMPP的PHP版本(推荐方案)
首先先确认你的Laravel项目需要的PHP版本:打开项目根目录的composer.json,找到require里的php项,比如Laravel 8.x要求>=7.3.0,Laravel 9.x要求>=8.0.2。
- 去XAMPP官网下载适配Mac系统、且包含对应PHP版本的XAMPP安装包。
- 安装新的XAMPP(安装前可以备份旧的项目文件),然后把你的Laravel项目重新放到新XAMPP的
htdocs目录下,启动Apache再访问。
3. 手动替换XAMPP的PHP版本(进阶方案)
如果不想重新安装XAMPP,可以手动替换PHP目录:
- 先停止XAMPP的Apache服务。
- 找到你系统中符合版本要求的PHP目录(就是终端
php -v对应的那个PHP的安装路径),把整个PHP目录复制到XAMPP的xamppfiles目录下,替换原来的php文件夹(替换前记得备份原文件夹)。 - 打开XAMPP安装目录下的
xamppfiles/etc/httpd.conf,找到加载PHP模块的行,比如原来的LoadModule php7_module modules/libphp7.so,修改成对应版本的模块,比如PHP8.1就是LoadModule php8_module modules/libphp8.so。 - 再打开
xamppfiles/etc/httpd-xampp.conf,检查里面的PHP配置路径,确保和新的PHP目录一致。 - 重启Apache,再访问你的Laravel项目,问题应该就解决了。
注意:不建议修改Laravel框架自带的helpers.php文件,这会导致后续框架更新出现冲突,保证PHP版本符合项目要求才是根本解决办法。
内容的提问来源于stack exchange,提问作者kobi
相关产品推荐
相关产品推荐

