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

如何从PHP中访问.zshrc里设置的自定义环境变量?

解决Mac下PHP无法读取.zshrc自定义环境变量的问题

问题原因

Mac上的Web服务(Apache、Nginx、PHP-FPM)属于系统级非交互式进程,只会加载系统默认的环境变量配置,而.zshrc是交互式Shell专属的配置文件,只有打开终端进入交互模式时才会加载,所以Web服务进程读不到这里定义的自定义环境变量,仅系统默认的PATH能被正常获取。

解决方案

方法1:写入系统级launchd配置(全局生效)

  • 新建或编辑/etc/launchd.conf文件:
    sudo nano /etc/launchd.conf
    
  • 添加环境变量配置:
    setenv APP_API_KEY 'xxxxxxxx'
    
  • 保存后重启系统,或者执行launchctl reboot重启launchd服务,所有系统级进程都会读到这个变量。

方法2:配置PHP-FPM(针对FPM模式)

如果你的PHP是通过PHP-FPM运行的,直接在FPM配置里设置变量:

  • 找到对应PHP版本的FPM配置文件,比如brew安装的PHP 8.1路径是/usr/local/etc/php/8.1/php-fpm.d/www.conf
  • 打开文件,添加:
    env[APP_API_KEY] = 'xxxxxxxx'
    
  • 重启PHP-FPM服务:
    brew services restart php@8.1
    

方法3:在Web服务器配置中传递变量

  • Apache环境:
    编辑httpd.conf或虚拟主机配置文件,添加:

    SetEnv APP_API_KEY 'xxxxxxxx'
    

    重启Apache:

    sudo apachectl restart
    
  • Nginx环境:
    在对应站点的server配置块中添加:

    fastcgi_param APP_API_KEY 'xxxxxxxx';
    

    确保配置中已经引入fastcgi_params文件,然后重启Nginx:

    sudo nginx -s reload
    

方法4:本地开发临时方案(内置服务器)

用PHP内置Web服务器测试时,可以直接在启动命令中传递变量:

APP_API_KEY='xxxxxxxx' php -S localhost:8000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:35:39