Can';t使用PHP客户端库将文件上载到Google云存储

Can';t使用PHP客户端库将文件上载到Google云存储,php,google-cloud-storage,google-api-php-client,Php,Google Cloud Storage,Google Api Php Client,我想这个脚本上传一个文本文件到我的谷歌云存储帐户的一个存储桶。我正在使用PHP客户端库,特别是objects.insert方法。在我实际调用insert方法之前,脚本似乎一直在运行(如果我取消该行,那么至少可以看到var_转储的结果)。如果我调用该方法,我会得到一个HTTP 500内部服务器错误(并且该文件不会进入我的云存储帐户) 需要注意的一些事项: 此脚本用于服务帐户 文本文件与此脚本位于同一文件夹中 我认为我调用insert的方式有问题,但我无法理解。如果您能给我一些建议,让这个脚本能

我想这个脚本上传一个文本文件到我的谷歌云存储帐户的一个存储桶。我正在使用PHP客户端库,特别是objects.insert方法。在我实际调用insert方法之前,脚本似乎一直在运行(如果我取消该行,那么至少可以看到var_转储的结果)。如果我调用该方法,我会得到一个HTTP 500内部服务器错误(并且该文件不会进入我的云存储帐户)

需要注意的一些事项:

  • 此脚本用于服务帐户
  • 文本文件与此脚本位于同一文件夹中
我认为我调用insert的方式有问题,但我无法理解。如果您能给我一些建议,让这个脚本能够正常工作,以便上传文本文件,我将不胜感激

代码如下:

<?php
    require_once 'lib/src/Google_Client.php'; 
    require_once 'lib/src/contrib/Google_StorageService.php';

    define("CLIENT_ID", "MY-CLIENT-ID");
    define("SERVICE_ACCOUNT_NAME", "MY-SERVICE-ACCOUNT-NAME");

    define("KEY_FILE", "/path/to/privatekey.p12");

    $client = new Google_Client();
    $client->setApplicationName("Google Cloud Storage Test Connection");

    session_start();
    if (isset($_SESSION['token'])) {
        $client->setAccessToken($_SESSION['token']);
    }

    // Load the key in PKCS 12 format (you need to download this from the
    // Google API Console when the service account was created.
    $key = file_get_contents(KEY_FILE);
    $client->setAssertionCredentials(new Google_AssertionCredentials(
        SERVICE_ACCOUNT_NAME,
        array('https://www.googleapis.com/auth/devstorage.read_write'),
        $key)
    );

    $client->setClientId(CLIENT_ID);

    //Define Storage Service
    $storageService = new Google_StorageService($client);
    $objects = $storageService -> objects;

    //Define Storage Object
    $gso = new Google_StorageObject ();
    $gso-> setName('myObj');

    //Define Storage Object Media
    $gsoMedia = new Google_StorageObjectMedia ();
    $gsoMedia-> setContentType('text/plain');
    $gsoMedia-> setData(file_get_contents('Test.txt'));

    //Link Storage Object Media to Storage Object
    $gso-> setMedia($gsoMedia);

    //Upload to Cloud Storage
    $result = $objects->insert(/*MY_BUCKET*/,  $gso);

    var_dump($gso);

?>

有关500个错误,请检查服务器的错误日志。这里会有更多的细节,而不是你在浏览器中看到的无用的“发生了什么事”。是的,如果没有错误信息,很难判断出哪里出了问题。我一直在WebMatrix中处理这个问题,我能看到的唯一错误代码是500个。然后我把脚本上传到我的服务器上,我立即得到一个关于意外T_常量的错误。我更改了常量声明的格式,现在我得到了这个错误(它非常长,所以我将链接到一个屏幕截图):我调整了.htaccess文件,以便使用PHP5.3,但我仍然得到以下结果:test.txt是否超过64KB?如果文件超过64KB,将数据设置为媒体对象的一部分是不可行的。无论如何,您可能希望使用
Google\u MediaFileUpload
上传对象。