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

谷歌云应用部署生产环境遇cPanel禁用putenv()无法下载云存储文件

问题原因

cPanel主机出于安全限制,默认在PHP配置的disable_functions列表中禁用了putenv()函数,你代码中通过putenv()设置谷歌云凭证环境变量的操作无法执行,因此触发报错。

解决方案

无需依赖环境变量传递凭证,直接在实例化谷歌云StorageClient时指定密钥文件路径即可,修改后的代码如下:

session_start();
require "../vendor/autoload.php";
// Imports the Cloud Storage client library.
use Google\Cloud\Storage\StorageClient;


function download_object($file)
{
    // 实例化时直接传入密钥文件路径,无需通过putenv设置环境变量
    $storage = new StorageClient([
        'keyFilePath' => '../92085350b1a.json'
    ]);
    $storage->registerStreamWrapper();
    $name = "../files/".time().".epub";
    if(file_put_contents($name,file_get_contents("url/".$file.".epub"))){
        $_SESSION['book']=explode("/",$name)[2];
        echo 'read';
    }else{
        echo "book not found";
    }
}

$el = explode("/",$_POST['url']);
$name = explode(".",$el[1]);
download_object($name[0]);

补充注意事项

  • 确保密钥文件92085350b1a.json的路径填写正确,PHP运行用户拥有该文件的读权限
  • 建议将密钥文件存放在站点web根目录之外,避免被外部直接访问泄露凭证
  • 若你使用的是独立服务器/有php.ini修改权限,也可以将putenv从disable_functions列表中移除后重启PHP服务,但该方案会降低主机安全性,不推荐使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:54:03