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

Laravel Forge部署的Stripe环境变量失效,本地正常求助

排查Laravel 5.5 + Forge/DigitalOcean上Stripe环境变量为空的问题

针对你遇到的情况,结合Laravel 5.5的特性和Forge的部署逻辑,给你几个针对性的排查步骤:

  • 优先清理配置缓存(别搞混缓存类型):
    你提到执行了php artisan cache:clear,但这个命令只清理应用缓存,配置缓存需要单独清理。Laravel 5.5中如果运行过php artisan config:cache,系统会把所有配置(包括env变量)编译成一个缓存文件,后续不会再读取.env文件。如果之前缓存时这两个Stripe变量不存在,哪怕后来添加了.env里的内容,缓存依然是空值。
    解决方法:在服务器上执行:

    php artisan config:clear
    php artisan cache:clear
    

    之后再测试Stripe功能。

  • 确认Forge部署时的.env是否被自动覆盖:
    Forge的部署流程默认会根据你在Forge面板「环境变量」页面设置的内容重新生成.env文件。如果你只在服务器上手动修改了.env文件,但没在Forge面板添加这两个Stripe变量,那么每次部署(比如git push触发的部署)都会覆盖掉服务器上的.env,导致变量丢失。
    排查方法:登录Forge面板,找到你的服务器和站点,进入「环境变量」页面,检查是否存在STRIPE_API_KEY和PUB_STRIPE_API_KEY,如果没有,添加进去并保存,Forge会自动更新服务器上的.env文件。

  • 检查服务器上.env文件的语法细节:
    虽然本地.env正常,但服务器上的文件可能存在隐性语法问题,比如:

    • 变量名或值前后有空格(比如STRIPE_API_KEY = sk_test_xxx,等号前后的空格会导致Laravel读取失败)
    • 值没有正确包裹(如果Stripe键里有特殊字符,虽然概率低,但可以尝试用双引号包裹:STRIPE_API_KEY="sk_test_xxx")
      你可以直接在服务器上执行以下命令,验证变量是否能被Laravel正确读取:
    php artisan tinker
    // 在tinker交互环境里执行:
    env('STRIPE_API_KEY')
    

    如果返回空,说明.env文件读取有问题;如果能返回正确的键,那可能是代码里的调用逻辑有问题。

  • 核对配置文件的引用逻辑:
    打开config/services.php,确认Stripe的配置是不是正确引用了env变量:

    'stripe' => [
        'model' => App\User::class,
        'key' => env('PUB_STRIPE_API_KEY'),
        'secret' => env('STRIPE_API_KEY'),
    ],
    

    确保这里没有硬编码为空值,或者没有被其他代码覆盖。

  • 快速排除文件权限问题:
    虽然其他env变量正常,但可以确认下服务器上.env文件的权限,确保web服务器用户(比如www-data)有读取权限:

    ls -l /path/to/your/site/.env
    

    通常权限应该是644,所有者是web服务器用户或者能被其读取的用户。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 20:32:57