oracle/oci-php-sdk

PHP的OCI SDK - 在您的PHP项目中使用Oracle云基础设施服务

0.1.0 2023-04-10 19:16 UTC

This package is not auto-updated.

Last update: 2024-09-26 23:33:28 UTC


README

关于

oci-php-sdk 为PHP提供了一个SDK,您可以使用它来管理Oracle云基础设施资源。

该项目是开源的,由Oracle公司维护。项目的首页在此处[链接]

要求

  • PHP 8.0

安装

从zip文件消费oci-php-sdk

  1. 创建一个目录,例如 /path/to/artifacts
  2. 在该目录中放置内部OCI PHP SDK zip文件,例如 oci-php-sdk-0.0.1-2021-11-02T13-44-29.zip
    • 如果您有多个版本的zip文件,请确保目录中只包含您想要使用的版本。
  3. oracle/oci-php-sdk的版本0.0.1添加到您的composer.json文件中
  4. 将类型为artifact的存储库添加到您的composer.json文件中,其中url设置为包含zip文件的目录,例如/path/to/artifacts

以下是一个此类composer.json文件的完整示例

{
    "name": "oracle/oci-php-sdk-consumer",
    "type": "project",
    "require": {
        "oracle/oci-php-sdk": "0.0.1"
    },
    "repositories": [
        {
            "type": "artifact",
            "url": "/path/to/artifacts"
        }
    ]
}
  1. 清除您的Composer缓存、vendor目录和composer.lock文件
composer clear-cache && rm -rf vendor; rm composer.lock
  • 这有助于确保vendor包含zip文件中的最新内容。
  1. 运行composer install
  2. 在您的源文件中,例如 src/test.php,引入vendor/autoload.php文件,然后使用您需要的OCI PHP SDK类。例如
<?php

require 'vendor/autoload.php';

use Oracle\Oci\Common\UserAgent;

echo "UserAgent: " . UserAgent::getUserAgent() . PHP_EOL;

?>
  1. 运行测试:php src/test.php

从Git存储库消费oci-php-sdk

  1. oracle/oci-php-sdk的版本dev-master添加到您的composer.json文件中
  2. 将类型为git的存储库添加到您的composer.json文件中,其中url设置为与您使用的git clone相同的URL,例如https://github.com/organization/my-repo.git
    • 注意https://github.com/organization/my-repo.git不是一个包含OCI PHP SDK的实际Git存储库。

以下是一个此类composer.json文件的完整示例

{
    "name": "oracle/oci-php-sdk-consumer",
    "type": "project",
    "require": {
        "oracle/oci-php-sdk": "dev-master"
    },
    "repositories": [
        {
            "type": "git",
            "url": "https://github.com/organization/my-repo.git"
        }
    ]
}
  1. 清除您的Composer缓存、vendor目录和composer.lock文件
composer clear-cache && rm -rf vendor; rm composer.lock
  • 这有助于确保vendor包含Git master分支的最新内容。
  1. 运行composer install
  2. 在您的源文件中,例如 src/test.php,引入vendor/autoload.php文件,然后使用您需要的OCI PHP SDK类。例如
<?php

require 'vendor/autoload.php';

use Oracle\Oci\Common\UserAgent;

echo "UserAgent: " . UserAgent::getUserAgent() . PHP_EOL;

?>
  1. 运行测试:php src/test.php

示例

示例可以在此处找到。

您可以通过使用php命令调用您想要运行的示例来运行任何示例,例如:php tests/Oracle/Oci/Examples/ObjectStorageExample.php

文档

在Oracle Linux 8上安装PHP 8.0

以下是在Oracle Linux 8上安装PHP 8.0的方法

sudo dnf module list php
sudo dnf install @php:8.0 -y

安装Composer

将Composer作为PHP的包管理器安装

php -r "copy('https://getcomposer.org.cn/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer

运行实例主体示例

tests/Oracle/Oci/Examples/InstancePrincipalsExample.phptests/Oracle/Oci/Examples/CachingInstancePrincipalsExample.php示例必须在OCI实例上运行。要设置它,您可以按照以下步骤操作

  1. 创建一个动态组。您可以使用以下匹配规则来获取某个组件中的所有实例

    Any {instance.compartment.id = '<ocid-of-compartment>'}
    
  2. 启动OCI实例。确保它被动态组匹配,例如,通过在正确的区域创建它。

  3. 为动态组创建一个策略,以授予所需的权限。例如

    Allow dynamic-group <name-of-dynamic-group> to manage buckets in compartment <name-of-compartment>
    Allow dynamic-group <name-of-dynamic-group> to manage objects in compartment <name-of-compartment>
    Allow dynamic-group <name-of-dynamic-group> to manage objectstorage-namespaces in compartment <name-of-compartment>
    
  4. 在Oracle Linux上安装PHP 8.0。见上文。

  5. 使用scprsync将OCI PHP SDK和此示例复制到OCI实例。

  6. 运行Composer以下载所需的包

    composer update
    composer install
    
  7. SSH连接到OCI实例。

  8. 运行示例

    php tests/Oracle/Oci/Examples/InstancePrincipalsExample.php
    
  9. 运行实例主体特定的单元测试

    php vendor/bin/phpunit --group InstancePrincipalsRequired
    

更改

变更日志

贡献

本项目欢迎社区贡献。在提交pull请求之前,请审查我们的贡献指南

安全

请咨询安全指南,以了解我们的负责任的安全漏洞披露流程。

已知问题

您可以在此处找到有关SDK的任何已知问题的信息。

线程安全

OCI PHP SDK基于GuzzleHttp\Client,因此,它与GuzzleHttp\Client具有相同的线程行为。

关于GuzzleHttp\Client的线程安全似乎没有很好的文档,但有线索表明它不是线程安全的

  1. "你正在使用线程(如pthread)吗?Guzzle不是线程安全的,不能在多线程应用程序中工作" 1
  2. "我猜测,底层的cURL句柄和PHP与cURL的集成在多个线程间共享时存在问题。你可能需要为每个线程创建唯一的客户端。" 2

这些问题并不仅限于OCI PHP SDK,解决方案似乎很简单,即为每个线程创建一个单独的客户端。

许可证

版权(c)2023,Oracle及其关联公司。保留所有权利。本软件根据https://oss.oracle.com/licenses/upl显示的通用许可(UPL)1.0或https://apache.ac.cn/licenses/LICENSE-2.0显示的Apache许可证2.0向您双重许可。您可以选择任一许可证。

LICENSE以获取更多详细信息。