我正在编写一个简单的php应用程序来测试对云存储桶的读/写准备
通过控制台Web界面
访问时,存储桶已定义并完美运行但是虽然我已经定义了composer.json,php.ini和app.yaml follwing文档,但在运行时我收到以下消息:
警告:file_put_contents():无法找到包装器" gs" - 你在配置PHP时忘了启用它吗?
代码是
<?php
require_once '../vendor/autoload.php';
$destination = "gs://contest17014.appspot.com/ripetiOra_82833hd93hd9dh.mp3";
file_put_contents($destination, $output);
?>
其中$ output是本地生成的mp3文件(为清晰起见未包括)
我在文档中读到应该自动包含包装器,但这是写入标准的env文档,而灵活的env文档中没有提到它。 我应该自己定义这个包装吗?
答案 0 :(得分:1)
我相信您已经切换了file_put_content
个参数,它们应该是:
<?php
require_once '../vendor/autoload.php';
$destination = "gs://contest17014.appspot.com/ripetiOra_82833hd93hd9dh.mp3";
file_put_contents($destination, $output);
?>
答案 1 :(得分:0)
gs://
环境中支持 standard
。对于flex
或其他环境,您必须使用 StorageClient库。
通过composer包含google/cloud-datastore
库。
示例:强>
$ composer require google/cloud-storage
<?php
require 'vendor/autoload.php';
use Google\Cloud\Storage\StorageClient;
$storage = new StorageClient([
'projectId' => 'my_project'
]);
$bucket = $storage->bucket('my_bucket');
// Upload a file to the bucket.
$bucket->upload(
fopen('/data/file.txt', 'r')
);
// Using Predefined ACLs to manage object permissions, you may
// upload a file and give read access to anyone with the URL.
$bucket->upload(
fopen('/data/file.txt', 'r'),
[
'predefinedAcl' => 'publicRead'
]
);
// Download and store an object from the bucket locally.
$object = $bucket->object('file_backup.txt');
$object->downloadToFile('/data/file_backup.txt');
答案 2 :(得分:0)
对于php72
和standard env
use Google\Cloud\Storage\StorageClient;
function register_stream_wrapper($projectId) {
$client = new StorageClient(['projectId' => $projectId]);
$client->registerStreamWrapper();
}
register_stream_wrapper("projectId");