oracle / oci-php-sdk
PHP的OCI SDK - 在您的PHP项目中使用Oracle云基础设施服务
Requires
- php: >=5.6
- cache/adapter-common: ^1.2
- guzzlehttp/guzzle: ^6.5
Requires (Dev)
- cache/filesystem-adapter: ^1.1
- overtrue/phplint: ^3.0
- phpunit/phpunit: >=5.7
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
- 创建一个目录,例如
/path/to/artifacts
- 在该目录中放置内部OCI PHP SDK zip文件,例如
oci-php-sdk-0.0.1-2021-11-02T13-44-29.zip
- 如果您有多个版本的zip文件,请确保目录中只包含您想要使用的版本。
- 将
oracle/oci-php-sdk
的版本0.0.1
添加到您的composer.json
文件中 - 将类型为
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"
}
]
}
- 清除您的Composer缓存、
vendor
目录和composer.lock
文件
composer clear-cache && rm -rf vendor; rm composer.lock
- 这有助于确保
vendor
包含zip文件中的最新内容。
- 运行
composer install
- 在您的源文件中,例如
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;
?>
- 运行测试:
php src/test.php
从Git存储库消费oci-php-sdk
- 将
oracle/oci-php-sdk
的版本dev-master
添加到您的composer.json
文件中 - 将类型为
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"
}
]
}
- 清除您的Composer缓存、
vendor
目录和composer.lock
文件
composer clear-cache && rm -rf vendor; rm composer.lock
- 这有助于确保
vendor
包含Gitmaster
分支的最新内容。
- 运行
composer install
- 在您的源文件中,例如
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;
?>
- 运行测试:
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.php
和tests/Oracle/Oci/Examples/CachingInstancePrincipalsExample.php
示例必须在OCI实例上运行。要设置它,您可以按照以下步骤操作
-
创建一个动态组。您可以使用以下匹配规则来获取某个组件中的所有实例
Any {instance.compartment.id = '<ocid-of-compartment>'}
-
启动OCI实例。确保它被动态组匹配,例如,通过在正确的区域创建它。
-
为动态组创建一个策略,以授予所需的权限。例如
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>
-
在Oracle Linux上安装PHP 8.0。见上文。
-
使用
scp
或rsync
将OCI PHP SDK和此示例复制到OCI实例。 -
运行Composer以下载所需的包
composer update composer install
-
SSH连接到OCI实例。
-
运行示例
php tests/Oracle/Oci/Examples/InstancePrincipalsExample.php
-
运行实例主体特定的单元测试
php vendor/bin/phpunit --group InstancePrincipalsRequired
更改
见变更日志。
贡献
本项目欢迎社区贡献。在提交pull请求之前,请审查我们的贡献指南。
安全
请咨询安全指南,以了解我们的负责任的安全漏洞披露流程。
已知问题
您可以在此处找到有关SDK的任何已知问题的信息。
线程安全
OCI PHP SDK基于GuzzleHttp\Client
,因此,它与GuzzleHttp\Client
具有相同的线程行为。
关于GuzzleHttp\Client
的线程安全似乎没有很好的文档,但有线索表明它不是线程安全的
- "你正在使用线程(如pthread)吗?Guzzle不是线程安全的,不能在多线程应用程序中工作" 1
- "我猜测,底层的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以获取更多详细信息。