Files
2025-11-26 05:26:08 +00:00

172 lines
4.6 KiB
PHP

<?php
/**
* 阿里云 OSS 连接测试脚本
*
* 用于测试 OSS 配置是否正确
*/
error_reporting(E_ALL);
ini_set('display_errors', 1);
echo "========================================\n";
echo "阿里云 OSS 连接测试\n";
echo "========================================\n\n";
// 加载配置
$config_file = __DIR__ . '/config.php';
if (file_exists($config_file)) {
require_once $config_file;
echo "✓ 配置文件加载成功\n\n";
} else {
echo "✗ 未找到配置文件 config.php\n";
echo " 请先运行 install_oss.sh 或手动创建配置文件\n";
exit(1);
}
// 检查配置
echo "[1/5] 检查配置参数...\n";
$errors = array();
if (!isset($use_aliyun_oss)) {
$errors[] = "未定义 \$use_aliyun_oss";
}
if (!isset($oss_config)) {
$errors[] = "未定义 \$oss_config";
} else {
if (empty($oss_config['access_key_id']) || $oss_config['access_key_id'] == 'YOUR_ACCESS_KEY_ID') {
$errors[] = "AccessKeyId 未配置或为默认值";
}
if (empty($oss_config['access_key_secret']) || $oss_config['access_key_secret'] == 'YOUR_ACCESS_KEY_SECRET') {
$errors[] = "AccessKeySecret 未配置或为默认值";
}
if (empty($oss_config['endpoint'])) {
$errors[] = "Endpoint 未配置";
}
if (empty($oss_config['bucket']) || $oss_config['bucket'] == 'your-bucket-name') {
$errors[] = "Bucket 未配置或为默认值";
}
}
if (!empty($errors)) {
echo "✗ 配置检查失败:\n";
foreach ($errors as $error) {
echo " - $error\n";
}
exit(1);
}
echo "✓ 配置参数检查通过\n\n";
// 检查 OSS SDK
echo "[2/5] 检查 OSS SDK...\n";
if (!isset($oss_sdk_path)) {
$oss_sdk_path = __DIR__ . '/vendor/autoload.php';
}
if (!file_exists($oss_sdk_path)) {
echo "✗ OSS SDK 未安装\n";
echo " 请运行: composer require aliyuncs/oss-sdk-php\n";
exit(1);
}
require_once $oss_sdk_path;
if (!class_exists('OSS\OssClient')) {
echo "✗ OSS SDK 类不存在\n";
echo " 请确认 SDK 安装正确\n";
exit(1);
}
echo "✓ OSS SDK 已安装\n\n";
// 测试 OSS 连接
echo "[3/5] 测试 OSS 连接...\n";
try {
$ossClient = new OSS\OssClient(
$oss_config['access_key_id'],
$oss_config['access_key_secret'],
$oss_config['endpoint']
);
echo "✓ OSS 客户端创建成功\n\n";
} catch (Exception $e) {
echo "✗ OSS 客户端创建失败\n";
echo " 错误信息: " . $e->getMessage() . "\n";
exit(1);
}
// 测试 Bucket 访问
echo "[4/5] 测试 Bucket 访问...\n";
try {
$exists = $ossClient->doesBucketExist($oss_config['bucket']);
if ($exists) {
echo "✓ Bucket '{$oss_config['bucket']}' 存在且可访问\n\n";
} else {
echo "✗ Bucket '{$oss_config['bucket']}' 不存在\n";
echo " 请检查 Bucket 名称是否正确\n";
exit(1);
}
} catch (Exception $e) {
echo "✗ Bucket 访问测试失败\n";
echo " 错误信息: " . $e->getMessage() . "\n";
exit(1);
}
// 测试文件操作
echo "[5/5] 测试文件操作...\n";
$testFile = 'oss_test_' . time() . '.txt';
$testContent = 'OSS 连接测试 - ' . date('Y-m-d H:i:s');
try {
// 上传测试文件
$ossClient->putObject($oss_config['bucket'], $testFile, $testContent);
echo "✓ 文件上传成功\n";
// 读取测试文件
$content = $ossClient->getObject($oss_config['bucket'], $testFile);
if ($content == $testContent) {
echo "✓ 文件读取成功\n";
} else {
echo "✗ 文件内容不匹配\n";
}
// 删除测试文件
$ossClient->deleteObject($oss_config['bucket'], $testFile);
echo "✓ 文件删除成功\n\n";
} catch (Exception $e) {
echo "✗ 文件操作失败\n";
echo " 错误信息: " . $e->getMessage() . "\n";
exit(1);
}
// 显示配置摘要
echo "========================================\n";
echo "测试完成!所有测试通过\n";
echo "========================================\n\n";
echo "配置摘要:\n";
echo " OSS 状态: " . ($use_aliyun_oss ? '已启用' : '未启用') . "\n";
echo " Endpoint: {$oss_config['endpoint']}\n";
echo " Bucket: {$oss_config['bucket']}\n";
echo " 使用 HTTPS: " . ($oss_config['use_ssl'] ? '是' : '否') . "\n";
echo " 使用内网: " . ($oss_config['use_internal'] ? '是' : '否') . "\n";
if (!empty($oss_config['prefix'])) {
echo " 路径前缀: {$oss_config['prefix']}\n";
}
echo "\n";
echo "下一步:\n";
if (!$use_aliyun_oss) {
echo " 在 config.php 中设置 \$use_aliyun_oss = true 以启用 OSS\n";
}
echo " 访问 Tiny File Manager 开始使用\n";
echo "\n";
?>