2.3.8. 使用 PHP 访问 Ceph 对象网关
您可以使用 PHP 脚本进行 S3 访问。此流程提供一些示例 PHP 脚本来执行各种任务,如删除存储桶或对象。
以下给出的示例针对 php v5.4.16
和 aws-sdk v2.8.24
测试。不要使用最新版本的 aws-sdk
for php
,因为它需要没有包括在 RHEL 7
默认仓库中的 php >= 5.5+
.php 5.5
。如果要使用 php 5.5
,则必须启用 epel
和其他第三方存储库。另外,php 5.5
和最新版本的 aws-sdk
的配置选项也不同。
先决条件
- 根级访问开发工作站。
- 互联网访问。
流程
安装
php
软件包:yum install php
[root@dev ~]# yum install php
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
下载适用于 PHP 的
aws-sdk
的 zip 存档并解压缩。 创建项目目录:
mkdir php_s3 cd php_s3
[user@dev ~]$ mkdir php_s3 [user@dev ~]$ cd php_s3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将提取的
aws
目录复制到项目目录中。例如:cp -r ~/Downloads/aws/ ~/php_s3/
[user@php_s3]$ cp -r ~/Downloads/aws/ ~/php_s3/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建连接文件:
vim conn.php
[user@php_s3]$ vim conn.php
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到
conn.php
文件中:语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
FQDN_OF_GATEWAY_NODE
替换为网关节点的 FQDN。按照 Red Hat Ceph Storage Object Gateway Configuration 和 Administration Guide 所述,将MY_ACCESS_KEY
和MY_SECRET_KEY
替换为创建S3
访问时生成的access_key
和secret_key
。使用您复制到
php
项目目录的提取的aws
目录替换PATH_TO_AWS
。保存文件并退出编辑器。
运行该文件:
php -f conn.php | echo $?
[user@php_s3]$ php -f conn.php | echo $?
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您在文件中正确提供了值,命令的输出将是
0
。创建存储桶的新文件:
vim create_bucket.php
[user@php_s3]$ vim create_bucket.php
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到新文件中:
语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出编辑器。
运行该文件:
php -f create_bucket.php
[user@php_s3]$ php -f create_bucket.php
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于列出所拥有的存储桶的新文件:
vim list_owned_buckets.php
[user@php_s3]$ vim list_owned_buckets.php
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到文件中:
语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出编辑器。
运行该文件:
php -f list_owned_buckets.php
[user@php_s3]$ php -f list_owned_buckets.php
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出应类似于如下:
my-new-bucket3 2022-04-21 10:33:19 UTC
my-new-bucket3 2022-04-21 10:33:19 UTC
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 首先创建名为
hello.txt
的源文件,以创建对象:echo "Hello World!" > hello.txt
[user@php_s3]$ echo "Hello World!" > hello.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建新 php 文件:
vim create_object.php
[user@php_s3]$ vim create_object.php
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到文件中:
语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出编辑器。
运行该文件:
php -f create_object.php
[user@php_s3]$ php -f create_object.php
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这将在 bucket
my-new-bucket3
中创建对象hello.txt
。创建用于列出存储桶内容的新文件:
vim list_bucket_content.php
[user@php_s3]$ vim list_bucket_content.php
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到文件中:
语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出编辑器。
运行该文件:
php -f list_bucket_content.php
[user@php_s3]$ php -f list_bucket_content.php
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出类似如下:
hello.txt 12 Fri, 22 Apr 2022 15:54:52 GMT
hello.txt 12 Fri, 22 Apr 2022 15:54:52 GMT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于删除空存储桶的新文件:
vim del_empty_bucket.php
[user@php_s3]$ vim del_empty_bucket.php
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到文件中:
语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出编辑器。
运行该文件:
php -f del_empty_bucket.php | echo $?
[user@php_s3]$ php -f del_empty_bucket.php | echo $?
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果删除了存储桶,命令会返回
0
作为输出。注意编辑
create_bucket.php
文件以创建空存储桶,例如:my-new-bucket4、
my-new-bucket5
。接下来,在尝试删除空存储桶前相应地编辑上述del_empty_bucket.php
文件。重要PHP 2 和
aws-sdk
的新版本不支持删除非空存储桶。创建用于删除对象的新文件:
vim delete_object.php
[user@php_s3]$ vim delete_object.php
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容粘贴到文件中:
语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出编辑器。
运行该文件:
php -f delete_object.php
[user@php_s3]$ php -f delete_object.php
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这将删除对象
hello.txt
。