You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级PHP后Laravel Valet切换至PHP8.1报错,artisan serve正常

排查方向与解决方案

1. 检查PHP 8.1的FPM权限配置

Valet依赖PHP-FPM运行,大概率是PHP8.1的FPM进程用户/组与站点文件权限不匹配:

  • 打开PHP8.1的FPM配置文件:
    open /usr/local/etc/php/8.1/php-fpm.d/www.conf
    
  • 找到user和group配置项,修改为你的macOS用户名和staff组:
    user = YOUR_MAC_USERNAME
    group = staff
    
  • 重启PHP8.1的FPM服务并重启Valet:
    brew services restart php@8.1
    valet restart
    

2. 移除站点目录的系统隔离属性

macOS的隔离属性可能限制PHP8.1进程访问站点文件:

  • 检查站点目录的扩展属性:
    xattr -l /MY_LARAVEL_PROJECT
    
  • 如果存在com.apple.quarantine属性,执行移除命令:
    xattr -d com.apple.quarantine /MY_LARAVEL_PROJECT
    

3. 重置Valet的PHP版本链接与缓存

可能Valet对PHP8.1的链接存在残留问题:

  • 查看当前Valet的PHP链接指向:
    ls -la ~/.config/valet/valet-php
    
  • 手动重新链接PHP8.1到Valet:
    ln -sf /usr/local/opt/php@8.1/bin/php ~/.config/valet/valet-php
    
  • 清除Valet缓存并重新安装配置:
    valet clear-cache
    valet install
    

4. 检查PHP 8.1的open_basedir限制

PHP的open_basedir配置可能限制了站点目录的访问:

  • 打开PHP8.1的php.ini文件:
    open /usr/local/etc/php/8.1/php.ini
    
  • 找到open_basedir配置项,直接注释掉(如果不需要路径限制):
    ;open_basedir =
    
  • 重启PHP8.1 FPM和Valet:
    brew services restart php@8.1
    valet restart
    

5. 修复PHP 8.1的FPM套接字权限

Valet通过套接字与PHP-FPM通信,套接字权限异常会导致访问失败:

  • 查看PHP8.1的FPM套接字路径:
    grep listen /usr/local/etc/php/8.1/php-fpm.d/www.conf
    
    通常输出为listen = /usr/local/var/run/php@8.1-fpm.sock
  • 检查套接字的权限与归属:
    ls -la /usr/local/var/run/php@8.1-fpm.sock
    
  • 如果权限不符合rw-rw----或归属不对,在www.conf中添加以下配置:
    listen.owner = YOUR_MAC_USERNAME
    listen.group = staff
    listen.mode = 0660
    
  • 重启PHP8.1 FPM和Valet

内容的提问来源于stack exchange,提问作者kennethjayden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 05:16:22